JavaScript实现指定区间数字求和时结果始终返回0的问题
问题原因
函数调用时未传入参数是你得到结果始终为0的核心原因:
你在全局作用域中已经通过prompt获取到了first、last两个数值变量,但你定义的addition函数声明了两个形参first和last,实际调用时你写的是addition()没有传入任何参数,此时函数内部的first、last均为undefined,循环判断条件i <= last永远不成立,累加逻辑不会执行,最终输出的就是sum的初始值0。
修复方案
调用函数时传入全局的first和last即可:
let first = Number(prompt("Please insert the first number: ")); let last = Number(prompt("Please insert the last number: ")); function addition(first, last) { let sum = 0; for (let i = first; i <= last; i++) { sum += i; } console.log("Sum is: ", sum); } // 传入参数 addition(first, last);
可选优化
如果存在用户输入的起始值大于终止值的场景,可以在函数内增加参数顺序校验,避免循环不执行的问题:
function addition(first, last) { // 自动调整区间顺序 if (first > last) [first, last] = [last, first]; let sum = 0; for (let i = first; i <= last; i++) { sum += i; } console.log("Sum is: ", sum); }
内容的提问来源于stack exchange,提问作者Midget
相关产品推荐
相关产品推荐

