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

aja*_*mar 0 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
Run Code Online (Sandbox Code Playgroud)

但明确传递undefined为初始值

[1,2].reduce(function(initial ,  val){

    return initial+val;
}, undefined)
// returns NaN.
Run Code Online (Sandbox Code Playgroud)

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

rob*_*lep 5

解释在这里:

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

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

[2].reduce(function(initial, val){
    return initial+val;
}, 1)
Run Code Online (Sandbox Code Playgroud)