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

JavaScript求和函数for循环报错求助:解决ReferenceError问题

修复summation函数的ReferenceError及求和逻辑错误

问题分析

  1. ReferenceError 根源
    你在for循环中用let i = 1声明变量i,let的作用域仅限循环块内部,循环结束后外部无法访问i,因此return sum + i中的i会触发未定义错误。

  2. 求和逻辑错误
    循环内执行sum = sum + n,每次累加的是参数n而非当前循环变量i,最终结果会变成n * n,完全不符合1到n求和的需求。

修正后的代码

function summation(n) {
  let sum = 0;

  for (let i = 1; i <= n; i++) {
    sum = sum + i; // 累加当前循环变量i,而非固定值n
  }

  return sum; // 直接返回求和结果,无需额外加i
}

module.exports = summation;

修正说明

  • 将循环内的累加对象从n改为i,确保每次累加的是1到n的当前数值;
  • 删除return语句中的+ i,循环结束后sum已经是1到n的总和,同时避免访问超出作用域的i变量。

优化方案(数学公式版)

如果追求更高效率,可以直接用等差数列求和公式计算,无需循环:

function summation(n) {
  return n * (n + 1) / 2;
}

module.exports = summation;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:20:43