Javascript 忽略js reduce中的默认参数

Javascript 忽略js reduce中的默认参数,javascript,ecmascript-6,Javascript,Ecmascript 6,我一直在使用JavaScript中的默认变量,但我无法让这个示例在任何方面都起作用(node 10.16.3、firefox 69、chrome 76) 它会默默地失败,是的,我知道我可以通过在回调后传递初始值来完成同样的事情。我只是想知道为什么这样不行。 initialValue可选 用作回调的第一个调用的第一个参数的值。如果未提供initialValue,则将使用并跳过数组中的第一个元素。在没有初始值的空数组上调用reduce(),将抛出类型错误 所以[1,2,3]迭代了2次,值[2,3]和

我一直在使用JavaScript中的默认变量,但我无法让这个示例在任何方面都起作用(node 10.16.3、firefox 69、chrome 76)

它会默默地失败,是的,我知道我可以通过在回调后传递初始值来完成同样的事情。我只是想知道为什么这样不行。

initialValue
可选

用作回调的第一个调用的第一个参数的值。如果未提供
initialValue
,则将使用并跳过数组中的第一个元素。在没有
初始值的空数组上调用
reduce()
,将抛出类型错误

所以
[1,2,3]
迭代了2次,值
[2,3]
和累加器
[1]
initialValue
可选

用作回调的第一个调用的第一个参数的值。如果未提供
initialValue
,则将使用并跳过数组中的第一个元素。在没有
初始值的空数组上调用
reduce()
,将抛出类型错误


因此
[1,2,3]
迭代了2次,值为
[2,3]
和累加器
[1]
acc=5
仅在值未定义的情况下使用
5
作为默认值

如果不以
arr.reduce(callback,initial)
的形式提供初始参数,则使用数组的第一个元素,迭代从数组的第二个元素开始:

让arr=[1,2,3];
arr.REDUCT((acc=5,el)=>{
控制台日志(acc、el);
返回acc+el;

})//->6
acc=5
将仅使用
5
作为默认值,否则该值将
未定义

如果不以
arr.reduce(callback,initial)
的形式提供初始参数,则使用数组的第一个元素,迭代从数组的第二个元素开始:

让arr=[1,2,3];
arr.REDUCT((acc=5,el)=>{
控制台日志(acc、el);
返回acc+el;

})//->6
在Chrome 77中工作良好。它是如何默默地失败的?如果失败,它会向你的控制台抛出一个错误。在Chrome77中工作正常。它是如何默默地失败的?如果失败,它应该向您的控制台抛出一个错误。
let arr = [1, 2, 3];
arr.reduce( (acc = 5, el) => acc + el)  // -> 6