Array.prototype.reduce的未定义输出

时间:2017-05-10 10:39:46

标签: javascript

为什么以下代码产生未定义的输出?

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很陌生,这就是为什么我无法弄清楚第一个错误的原因。

提前感谢您的帮助。

1 个答案:

答案 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控制台中运行它,它始终会自动显示您最后做的事情的结果。