第 13 课 18 / 22 | 编码:L13-19
代码推演

终止条件只差一个字符

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。