为什么以下代码产生未定义的输出?
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很陌生,这就是为什么我无法弄清楚第一个错误的原因。
提前感谢您的帮助。
答案 0 :(得分:2)
您的sumAll
函数没有任何返回值,并且您没有使用它没有的返回值。在return
来电之前添加reduce
,并使用它:
function sumAll(arr) {
return arr.reduce( (a, b) => a + b );
// ^^^^^^---- Return the result
}
console.log(sumAll([1,2,3,4])); // Use the result
您在第二个代码块中看到结果的原因是您在JavaScript控制台中运行它,它始终会自动显示您最后做的事情的结果。