我使用数组缩减功能测试了几个场景。
[1,2].reduce(function(initial , val){
return initial+val;
} ,1)
// returns 4 as expected
[1,2].reduce(function(initial , val){
return initial+val;
})
// returns 3
但显式传递undefined
作为初始值
[1,2].reduce(function(initial , val){
return initial+val;
}, undefined)
// returns NaN.
这对我来说似乎很不寻常。
答案 0 :(得分:5)
解释here:
注意:如果未提供
initialValue
,则reduce将从索引1开始执行回调函数,跳过第一个索引。如果提供了initialValue
,它将从索引0开始。
所以你的第二个案例与此类似:
[2].reduce(function(initial, val){
return initial+val;
}, 1)