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

JS使用for...in遍历对象累加数值型值时结果为0的原因求解

错误原因

  • 你调用Object.values(sumMe)的用法完全错误:这个方法返回的是包含sumMe所有属性值的数组,typeof判断数组返回的结果是object,永远不可能等于number,所以判断条件永远不成立,if内部的累加逻辑一次都没执行,total自然保持初始值0。
  • 即使判断条件偶然成立,把整个数组加到total中也不会得到数值累加的效果,只会触发隐式类型转换把数组转成字符串拼接,完全不符合需求。

修复方案

for...in循环遍历对象时,你声明的循环变量本身就是当前遍历到的属性键,直接用sumMe[当前键]就能拿到当前键对应的值,判断这个值的类型后累加即可。
正确代码如下:

const sumMe = {
  hello: 'there',
  you: 8,
  are: 7,
  almost: '10',
  done: '!'
};

let total = 0;

// for...in 遍历逻辑
for (let key in sumMe) {
  const currentVal = sumMe[key];
  if (typeof currentVal === 'number') {
    total += currentVal;
  }
}

console.log(total); // 输出结果为15,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:36:05