获得NaN而不是数字

时间:2015-06-12 14:35:26

标签: javascript numbers nan

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

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

2 个答案:

答案 0 :(得分:2)

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

让我们看一下脚本:

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

这里为每个i运行按位XOR。由于i中的所有位都等于它们自己,x始终为0. result在开始时为0,每次向其添加0,因此,结束时result的值为0。

var z = result ^ result;

当你对自己进行异或result时,result的所有位都等于它们自己,所以结果将为0。

var y = result - z;

您从0减去0,结果为0。

XOR B = A&lt;&gt;乙

按位级别

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

答案 1 :(得分:1)

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

但是,由于您没有初始化result,因此它是undefined0 +上的数学运算(例如undefined)将始终生成NaN