JavaScript函数调试:实现符合规则的分数向上取整至5的倍数
修复你的分数取整JavaScript函数
嘿,我来帮你搞定这个函数的问题!先看看你遇到的几个小坑,再给你完整的修复方案:
首先,你的代码里明显有个拼写错误——remai...应该是remainder,这会直接导致浏览器抛出ReferenceError,变量未定义。另外,你的逻辑分支也没写完,咱们把需求拆解清楚,再一步步实现:
明确需求逻辑
咱们再梳理一遍规则,确保没理解错:
- 如果分数小于38,直接返回
"fail" - 对于38及以上的分数:
- 计算当前分数到下一个5的倍数的差值
- 只有当这个差值小于3时,才向上取整到该倍数;否则保持原分数
修复后的完整代码
function roundGrade(grade) { // 先处理不及格的情况,优先级最高 if (grade < 38) { return "fail"; } // 计算当前分数除以5的余数 const remainder = grade % 5; // 算出到下一个5的倍数需要补多少分 const difference = 5 - remainder; // 判断是否需要向上取整:差值小于3才取整 if (difference < 3) { return grade + difference; } else { // 不需要取整就返回原分数 return grade; } } // 测试几个典型案例验证一下 console.log(roundGrade(53)); // 输出 55(差值2<3,取整) console.log(roundGrade(52)); // 输出 52(差值3,不满足条件) console.log(roundGrade(71)); // 输出 71(差值4>3,保持原分数) console.log(roundGrade(37)); // 输出 "fail"(小于38) console.log(roundGrade(38)); // 输出 40(差值2<3,取整) console.log(roundGrade(79)); // 输出 80(差值1<3,取整)
为啥你的原代码出问题?
- 变量拼写错误:
remai...是remainder的不完整拼写,JS找不到这个变量就会报错 - 逻辑分支缺失:你写了
else if (remai...但没写完判断条件和后续处理,导致代码不完整 - 差值判断逻辑容易搞混:要注意是判断「到下一个5的倍数的差值」,而不是余数本身——比如余数是3的时候,差值是2,满足小于3的条件,需要取整;余数是2的时候,差值是3,不满足条件,保持原分数
这样修改后,函数就能完全符合你的需求啦!
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

