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

使用Rest运算符的JavaScript求和函数返回NaN问题排查

问题分析与修复

代码里的两个核心问题

  • 空数组判断错误:args == []永远不会成立,因为数组是引用类型,两个独立的数组对象无法通过==判定相等。正确的判断方式是检查数组长度args.length === 0。
  • for...of循环使用错误:for (let i of args)里的i是数组的元素值,不是索引。比如调用sum(1,2)时,第一次迭代i=1,你取args[i]等于args[1]即2,sum变成2;第二次迭代i=2,args[2]是undefined,相加后sum就变成NaN。而且i++完全多余,for...of会自动遍历所有元素。

修复后的代码

function sum(...args) {
  if (args.length === 0) {
    return 0;
  }
  let total = 0;
  for (let num of args) {
    total += num;
  }
  return total;
}

更简洁的写法(可选)

利用数组的reduce方法可以一行搞定:

function sum(...args) {
  return args.reduce((total, num) => total + num, 0);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:25:19