获取 NaN 而不是 Number

Getting NaN Instead of Number

我在使用下面的代码时遇到了一个小问题,而不是我得到的数字 NaN。怎么了?

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

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,因此,在最后 result 的值为 0.

var z = result ^ result;

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

var y = result - z;

你从 0 中减去 0,结果是 0。

A 异或 B = A <> B

按位级别

A XOR B 产生每个位的 XOR 结果。

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

但是,由于您没有初始化 result,它是 undefinedundefined 上的数学运算(例如 0 +)将始终导致 NaN