为什么将调节器设置为-10?

问题描述

我想问你,为什么在这种情况下将累加器设置为-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