为什么下面的代码产生未定义作为输出?
function sumAll(arr) {
arr.reduce( (a, b) => a + b );
}
sumAll([1,2,3,4]);
如果我在没有像这样的函数的情况下运行这段代码:
var arr = [1,2,3,4];
arr.reduce( (prev, curr) => prev + curr );
它工作正常并产生 10 作为所有元素的总和。
第一个有什么问题?我对JS很陌生,这就是为什么我无法弄清楚第一个有什么问题。
提前感谢您的帮助。
您的 sumAll
函数没有任何返回值,并且您没有使用它没有的返回值。在reduce
调用之前添加return
,并使用它:
function sumAll(arr) {
return arr.reduce( (a, b) => a + b );
// ^^^^^^---- Return the result
}
console.log(sumAll([1,2,3,4])); // Use the result
你看到第二个代码块的结果的原因是你在 JavaScript 控制台中运行它,它总是自动显示你最后做的事的结果。