使用展开运算符计算数组平均值时函数无返回结果的问题排查
问题原因及修复方案
你的代码存在两个核心问题,导致无法得到正确的平均值结果:
sum是函数而非求和数值
你定义的sum是一个箭头函数,并非直接计算出的总和值。执行console.log(sum)时打印的是函数本身,后续用sum / arr.length属于将函数与数字做除法,结果会是NaN(非有效数字)。未调用求和函数并传入参数
你需要主动调用求和函数,并用展开运算符把数组元素传递进去,才能得到实际的总和数值。
修复后的代码:
let arr = [1, 2, 3, 4, 5]; console.log(...arr); // 定义求和函数,用剩余参数接收传入的元素 let getSum = (...nums) => nums.reduce((a, b) => a + b); // 调用函数,用展开运算符传递数组元素,得到总和 let sum = getSum(...arr); console.log(sum); // 计算并打印平均值 const avg = sum / arr.length; console.log(avg); // 输出3
补充说明:
- 把函数名改成
getSum是为了避免和存储总和的变量sum混淆,语义更清晰; - 用
const声明avg(如果不需要重新赋值),符合JavaScript变量声明的最佳实践; - 函数里的
...nums是剩余参数语法,用来把传入的单个元素重新收集成数组,而调用时的...arr是展开运算符,用来把数组拆成单个参数传递,二者配合实现了用展开运算符辅助求和的需求。
内容的提问来源于stack exchange,提问作者Aditya Vaidhya
相关产品推荐
相关产品推荐

