问题描述
我想问你,为什么在这种情况下将累加器设置为-10。我以为,累加器的默认值设置为0。
const number = [5,10,13,18];
var x = number.reduce((accumulator,currentValue) => { return accumulator - currentValue});
console.log(x);
输出应为-46,但应为-36。
解决方法
当您不为累加器提供初始值时,对回调的第一次调用将把第一个条目作为第一个参数,将第二个作为第二个参数。因此,您的第一个呼叫是5,10
,并返回5 - 10
的{{1}}。然后下一个调用是-5
,它是-5,13
,它是-5 - 13
,再一次是-18
,它会产生-18,18
。
如果要以-36
开头,则需要明确指定:
0
实时示例:
var x = number.reduce((accumulator,currentValue) => { return accumulator - currentValue},0);
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^
还值得注意的是,如果不为累加器提供初始值,则在空数组上调用const number = [5,10,13,18];
var x = number.reduce((accumulator,0);
console.log(x);
会导致运行时错误:
reduce