You need to enable JavaScript to run this app. 为什么我的3和5倍数累加求和JavaScript函数返回NaN?
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的3和5倍数累加求和JavaScript函数返回NaN?

问题根因与修复方法
  • 输出NaN的核心原因:代码声明let result时没有做初始化赋值。JavaScript中未手动初始化的局部变量默认值为undefined,执行result += i的逻辑等价于result = undefined + i,这类非数字类型和数字的混合运算结果为NaN。后续循环中无论叠加多少合法数字,NaN和任意数值的加法运算结果始终为NaN,最终返回值必然是异常结果。
  • 异常是否和函数作用域有关:完全无关。result是在函数内部顶层作用域声明的变量,整个循环逻辑、return语句都处于该变量的可访问范围内,不存在作用域隔离、跨作用域取值失效的问题。
  • 最小修复方案:在声明result时为其设置数字类型的初始值0,保证首次累加是两个数字之间的合法数学运算。

修正后的可正常运行代码:

function solution(number) {
  const multiples = [3, 5];
  let result = 0;

  for (let i = 0; i < number; i++) {
    if (i % multiples[0] === 0 || i % multiples[1] === 0) {
      result += i;
    }
  }
  return result;
}
console.log(solution(49)); // 运行后输出543

补充说明:当前循环逻辑已经自动实现了重复值去重:循环逐一遍历数字,单个数字即使同时满足被3整除、被5整除的条件,也只会在单次循环中被累加一次,不需要额外增加去重判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 13:36:04