You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript数组求和函数中for循环失效问题求助

问题排查与修复

核心问题

第二个for循环的终止条件错误:p <= d.length会导致循环多执行一次,访问到数组的越界索引。

数组索引从0开始,最后一个元素的索引是d.length - 1。当p等于d.length时,d[p]的值为undefined,将其加到数值m中会让m变成NaN,最终返回结果异常。

修复后的代码

把第二个循环的条件改为p < d.length即可:

function addUp(num) {
  let d = [];
  let m = 0;
  for (let i = 0; i < num; i++) {
    d.push(i)
  }
  // 修正循环终止条件
  for (let p = 0; p < d.length; p++) {
    m += d[p]
  }

  return m;
}
console.log(addUp(10)) // 输出45

优化方案(可选)

没必要额外创建数组,直接用等差数列求和公式就能完成计算,效率更高:

function addUp(num) {
  // 计算0到num-1的和:(首项+末项)*项数/2
  return (0 + (num - 1)) * num / 2;
}
console.log(addUp(10)) // 输出45

如果需求是求1到num的和,公式改为num * (num + 1) / 2即可,比如addUp(10)会返回55。

内容的提问来源于stack exchange,提问作者npr88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:45:37