【问题标题】:Getting NaN Instead of Number获取 NaN 而不是 Number
【发布时间】:2015-08-28 14:52:09
【问题描述】:

我对下面的代码有一个小问题,而不是我得到的数字 NaN。怎么了?

for (var i = 0; i<100; i++) {
    x = i ^ i
    result = x + result;
}
var y = result - (result ^ result);
console.log(y);

【问题讨论】:

  • 初始化结果是什么?
  • 你在哪里声明了结果?
  • 对不起:result = 0;
  • 我得到 0 作为 y 的值。
  • 是的,我一开始没有将结果初始化为 0,但它应该返回一个不同于零的数字。对吗?

标签: javascript numbers nan


【解决方案1】:

更具体地说明你为什么得到NaN:正如@LajosArpad 所说,你实际上只是做了100 次result = 0 + result;

但是,由于您没有初始化 result,所以它是 undefined。对undefined 的数学运算(例如0 +)将始终得到NaN

【讨论】:

    【解决方案2】:

    它是NaN,因为您在开始时没有初始化result

    让我们看看脚本:

    var result = 0;
    var x;
    for (var i = 0; i<100; i++) {
        x = i ^ i
        result = x + result;
    }
    

    在这里,您正在为每个i 运行按位异或。由于i 中的所有位都等于自己,x 将始终为 0。result 开头为 0,每次添加 0,因此,结尾处 @ 的值987654328@为0。

    var z = result ^ result;
    

    当您对 result 与自身进行异或运算时,result 的所有位都等于它们自己,因此结果将为 0。

    var y = result - z;
    

    你从 0 中减去 0,得到 0。

    A XOR B = A B

    按位级别

    A XOR B 导致每个位的 XOR 结果。

    【讨论】:

      猜你喜欢
      • 2012-08-10
      • 2016-08-09
      • 2015-11-19
      • 2016-10-30
      • 2021-11-01
      • 1970-01-01
      • 2012-06-07
      • 2023-01-01
      • 2020-03-12
      相关资源
      最近更新 更多