在这种情况下,我发现NaN == NaN是假的。我不明白为什么会发生这种情况,因为类型和数值都相同。那怎么可能。
答案 0 :(得分:1)
将此视为NaN UNKNOWN 所以,
UNKNOWN永远不会与另一个相同 UNKNOWN .... UNKNOWN(NaN)== UNKNOWN(NaN)// false
另一个例子:
让我们说x =' a',y =' b'两者都不是数字,因此x = NaN,y = NaN但x!= y
http://en.wikipedia.org/wiki/IEEE_floating_point
浮点数的IEEE 754规范(所有语言都用于浮点数)表明NaN永远不会相等。
答案 1 :(得分:1)
NaN's
在设计上永远不会相等。
Math.log(-1) is NaN
Math.log(-2) is NaN
这是否意味着Math.log(-1) == Math.log(-2)
?
答案 2 :(得分:0)
NaN&#39>是不寻常的情况。它们不等于任何东西(对自己也是如此)。
因此,当您测试NaN==NaN
时,它会返回false。
要测试NaN,您可以使用@Bergi评论:
var x = NaN;
if(x !== x){
console.log('It is NaN');
}
答案 3 :(得分:0)
Nan - JavaScript多么美好的案例。
针对NaN进行测试
等式运算符(==和===)不能用于测试值 NaN的。使用Number.isNaN()或isNaN()代替。
NaN === NaN; // false Number.NaN === NaN; // false isNaN(NaN); // true isNaN(Number.NaN); // true