【问题标题】:Variable becomes NaN outside for loop in JavaScript变量在 JavaScript 中的 for 循环外变为 NaN
【发布时间】:2016-05-04 15:29:59
【问题描述】:

我很好奇变量如何在 for 循环内成为整数,但在循环外立即变为 NaN

var sumNum = 0;

for (var i = data.length - 1; i >=0; i--) {
    sumNum += data[i].stored_value;

    // check value inside loop
    console.log(sumNum);
}

// check value outside loop
console.log(sumNum);

结果: 第一个console.log(sumNum) 打印递增的整数,因为我们迭代并在数组中添加stored_value。但第二个console.log(sumNum) 打印NaN

我阅读了一个相关线程 (Variable becomes Nan when i try to use it outside of the .each function),解释了如果在循环内实例化变量会发生这种情况,但在我的情况下,变量是首先全局创建的。

任何人都可以分享一些关于如何发生这种情况的见解吗?

【问题讨论】:

  • 请分享里面的数据是什么?
  • 请提供console.log(data[0].stored_value)的输出
  • data = [{stored_value:2},{stored_value:5}]测试没有问题
  • data[x].stored_value 的概率可能包含一些不适当的值,例如不能执行求和的字符/字符串。
  • @Sagar R - stored_value 在其中一个对象中不是数字...我认为这导致了问题。

标签: javascript


【解决方案1】:

在下面的代码中添加一个数字检查

if(isNaN(data[i].stored_value) == false) {
     sumNum += data[i].stored_value;
}

因为如果你在某个变量中添加一个非数值(可能是一些空白值),它就会变成 NaN

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多