在数组reduce中显式传递初始值为undefined

时间:2016-08-30 05:48:18

标签: javascript arrays reduce

我使用数组缩减功能测试了几个场景。

[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.

这对我来说似乎很不寻常。

1 个答案:

答案 0 :(得分:5)

解释here

  

注意:如果未提供initialValue,则reduce将从索引1开始执行回调函数,跳过第一个索引。如果提供了initialValue,它将从索引0开始。

所以你的第二个案例与此类似:

[2].reduce(function(initial, val){
    return initial+val;
}, 1)