我对 Javascript 非常陌生,我正在尝试编写一个对数字求和的函数。 下面的函数返回“0”而不是总和(我不知道为什么)。
function sumTo(N) {
var total = 0
for (var i = 0; i < N.length; i++) {
total = total + N[i];
}
return total;
};
console.log(sumTo(1,2,3,4,5));
最佳答案
您正在尝试获取 length
来自一个数字(您传递给函数的第一个数字;在您的示例中为 1
)。数字没有长度,所以你得到 undefined
,和0 < undefined
为 false,因此您的循环永远不会运行。
或者:
将数组传递到
sumTo
console.log(sumTo([1, 2, 3, 4, 5]); // Note ----------^-------------^
或
使用
arguments
自动局部变量for (var i = 0; i < arguments.length ++i) { total += arguments[i]; }
或
使用 ES2015 的“rest”参数:
// ES2015+ only! function sumTo(...values) { let total = 0; for (let i = 0; i < values.length; ++i) { total += values[i]; } return total; }
由于此时您处于 ES2015,因此您可以使用
reduce
使用箭头函数(总和是reduce
的完美用例):// ES2015+ only! function sumTo(...values) { let total = values.reduce((a, b) => a + b); return total; }
或者
for-of
,另一个 ES2015 的事情:// ES2015+ only! function sumTo(...values) { let total = 0; for (let value of total) { total += value; } return total; }
关于javascript - 尝试创建一个对数字求和的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40044995/