使用 Array.prototype.reduce 的未定义输出



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

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 控制台中运行它,它总是自动显示你最后做的事的结果。

最新更新