代码推演
终止条件只差一个字符
function sum(values) {
let total = 0;
for (let i = 0; i <= values.length; i += 1) {
total += values[i];
}
return total;
}
console.log(sum([10, 20]));
console.log(sum([]));
提问:逐次列出 i 与 values[i]。为什么两个结果都不是预期?修复后,用空数组和单元素数组检查边界。
查看参考解析
使用 <= 多访问一次越界元素 undefined,数值相加产生 NaN;空数组也会访问索引 0。改为 i < values.length,结果分别为 30、0。