[英]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
運行按位XOR。 由於i
中的所有位都等於它們自己,因此x
將始終為0. result
在開始時為0,每次向其添加0,結果, result
值為0。
var z = result ^ result;
當你自己對result
進行異或時,那么result
所有位都等於它們自己,所以結果將為0。
var y = result - z;
您從0減去0,結果為0。
A XOR B = A <> B.
按位級別
XOR B導致每個位的XOR結果。
更具體地說明為什么你得到NaN
:正如@LajosArpad所說,你實際上只是做result = 0 + result;
100次。
但是,由於您沒有初始化result
,因此undefined
。 undefined
數學運算(如0 +
)將始終產生NaN
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.