Javascript 在数组中设置initialValue与不设置initialValue#减少
第1版:Javascript 在数组中设置initialValue与不设置initialValue#减少,javascript,reduce,Javascript,Reduce,第1版: var c = [ '##' ] console.log(c.reduce(function(a,b){ return b.length }, 0)) // 2 第2版: var c = [ '##' ] console.log(c.reduce(function(a,b){ return b.length })) // "##" 我只是好奇,如果我不提供初始值,为什么length方法不起作用,正如您在版本2中看到的那样 那么,在这种情况下,有人能告诉我为什么需要为le
var c = [ '##' ]
console.log(c.reduce(function(a,b){
return b.length
}, 0)) // 2
第2版:
var c = [ '##' ]
console.log(c.reduce(function(a,b){
return b.length
})) // "##"
我只是好奇,如果我不提供初始值,为什么length方法不起作用,正如您在版本2中看到的那样
那么,在这种情况下,有人能告诉我为什么需要为length方法提供初始值才能工作吗?Version 1
从
第一次调用回调时,previousValue和currentValue可以是两个值之一。如果在reduce调用中提供initialValue,则previousValue将等于initialValue,currentValue将等于数组中的第一个值
nextValue = '##'
在版本1中,提供了初始值
。因此,根据文档,previousValue
被指定为initialValue
因此,对于第一次迭代:
previousValue = initialValue
previousValue = 0
而nextValue
是数组中的第一个元素
nextValue = '##'
因此,返回值为2
版本2自我解释 如果数组为空且未提供initialValue,则将抛出TypeError如果数组只有一个元素(无论位置如何),并且没有提供initialValue,或者如果提供了initialValue,但数组为空,则将返回solo值,而不调用回调。 版本1 从 第一次调用回调时,previousValue和currentValue可以是两个值之一。如果在reduce调用中提供initialValue,则previousValue将等于initialValue,currentValue将等于数组中的第一个值
nextValue = '##'
在版本1中,提供了初始值
。因此,根据文档,previousValue
被指定为initialValue
因此,对于第一次迭代:
previousValue = initialValue
previousValue = 0
而nextValue
是数组中的第一个元素
nextValue = '##'
因此,返回值为2
版本2自我解释 如果数组为空且未提供initialValue,则将抛出TypeError如果数组只有一个元素(无论位置如何),并且没有提供initialValue,或者如果提供了initialValue,但数组为空,则将返回solo值,而不调用回调。