为什么这两者不同?
var x = NaN; //e.g. Number("e");
alert(isNaN(x)); //true (good)
alert(x == NaN); //false (bad)
最佳答案
没有等于NaN
。任何比较都将始终为 false
。
在严格比较算法和抽象比较算法中,如果类型相同,并且任一操作数为 NaN
,则结果将为 false
。
If Type(x) is Number, then
- If
x
isNaN
, returnfalse
.- If
y
isNaN
, returnfalse
.
在抽象算法中,如果类型不同,并且 NaN
是其中一个操作数,那么另一个操作数最终将被强制转换为数字,并将我们带回场景如上所述。
关于javascript - 为什么 IsNaN(x) 与 x == NaN 不同,其中 x = NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14986361/