function getSum(total, num) {
return total + Math.round(num);
}
function myFunction(numbers) {
return numbers.reduce(getSum, 0);// 24
return numbers.reduce(getSum);// 23.5 为什么改变了传递给函数的初始值,得出的结果不一样?
}
myFunction([15.5, 2.3, 1.1, 4.7]);
var numbers = [65, 44, 12, 4];
function getSum(total, num) {
return total + num;
}
function myFunction(item) {
document.getElementById("demo").innerHTML = numbers.reduce(getSum, 0);// 125
document.getElementById("demo").innerHTML = numbers.reduce(getSum);// 125 为什么这里没有改变
}
你若不指定默认值,那么total参数第一轮计算中就是第一个数。
[15.5, 2.3, 1.1, 4.7]
这里相当于 15.5是第一个total(没参与四舍五入),然后不断加后面四舍五入的数,结果就是23.5; 如果设置了total默认值0,它把后面所有的数都四舍五入后相加了,故是24.第二个问题不用解答了,你肯定也明白,因为里面都是整数,不会出现差异。