这段求平均值的代码错在哪?
看模型能不能定位边界错误,并给出最小修复。
测试提示词
下面这段 JavaScript 求数组平均值,有什么问题?请指出 bug,并给出修复后的代码。
```js
function average(nums) {
let sum = 0;
for (let i = 1; i < nums.length; i++) {
sum += nums[i];
}
return sum / nums.length;
}
```观察点
- 是否发现循环从
i = 1开始,漏掉了第一个元素。 - 是否指出空数组会得到
NaN,或除以 0 的问题。 - 修复是否保持函数意图,没有引入新的边界错误。
参考方向
function average(nums) {
if (!nums.length) return 0;
let sum = 0;
for (let i = 0; i < nums.length; i++) sum += nums[i];
return sum / nums.length;
}
空数组返回 0 是产品选择;也可以抛错,但要说明。
常见表现
- 只把
i = 1改成i = 0,没提空数组。 - 用
reduce重写但漏掉初始值。 - 修复后没有解释为什么。
注意
这是小型代码审查,不代表完整编程能力;可以再让它跑测试用例。
最后验证:2026年10月25日