在JavaScript中使用数组时,这里我尝试使用reduce方法计算平均值。
我的问题在第 3 行: 不使用括号
avg + num/ arr.length
给出正确的输出,但 使用括号 (avg + num) / arr.length
给出错误的输出。
谁能解释一下这种有线行为背后的原因是什么?
const calcAverage = function (nums) {
const average = nums.reduce(
(avg, num, i, arr) => (avg + num) / arr.length,
0
);
return average;
};
const avg = calcAverage([1, 1, 1, 1, 1]);
console.log(avg);
出现此行为的原因是运算的数学顺序发生了变化。在数学中,首先进行乘法/除法运算,然后进行加法/减法运算。通过添加括号,您首先执行加法,然后执行除法。没有括号,首先进行除法,然后进行加法