Javascript 不平等

Javascript 不平等,javascript,nan,Javascript,Nan,只是为了好玩,我试着比较一个我设置为NaN的值和另一个我也设置为NaN的值 为什么具有相同值的两个变量不相等 var a = Number.Nan var b = Number.Nan a === b false a == b false var a = NaN var b = NaN a === b false a == b false 为什么会发生这种情况?NaN不是一个数字,没有可比较的计算数值-使用IsNaN()比较NaN值 请记住,很多JavaScript都不是很好。它是在10

只是为了好玩,我试着比较一个我设置为NaN的值和另一个我也设置为NaN的值

为什么具有相同值的两个变量不相等

var a = Number.Nan
var b = Number.Nan
a === b
false

a == b
false

var a = NaN
var b = NaN
a === b 
false
a == b
false

为什么会发生这种情况?

NaN不是一个数字,没有可比较的计算数值-使用IsNaN()比较NaN值

请记住,很多JavaScript都不是很好。它是在10天内设计的,其中很多(不是全部)可能不是直观的。在这种情况下,您不必考虑原因,只需使用isNaN(someVar)进行检查。

正如@TechnicalChaos所说,这里是通过W3Schools连接到MDN的链接;)

楠:

伊斯南:

相关部分包括:

在程序中使用NaN是相当罕见的。它是返回的值 当数学函数失败(Math.sqrt(-1))或函数尝试 解析数字失败(parseInt(“blabla”))

以及:

与JavaScript中所有其他可能的值不同,它不可能 依赖相等运算符(==和===)来确定 值是否为NaN,因为NaN==NaN和NaN==NaN都进行计算 这是错误的。因此,有必要使用isNaN函数

不要认为
NaN
null
undefined
一样,这是一个“特例”:p

但如果你愿意冒险买块饼干:

NaN.toString() === NaN.toString()
true

但是不要那样做

NaN不等于任何东西,包括NaN本身。注意:在未来(ES6+或),您将能够使用比较
NaN
值。更奇怪的是,
a==a
返回false:)这不是Javascript ideosynchracy,它是IEEE浮点标准的一部分。如果Brian说“记住一些Javascript很奇怪”,我同意:
{}+{}//NaN
[]+[]; // “
和最好的
[]+{};//[object object]
:p谢谢你填了答案,:)我确实觉得有点懒,但我一直在另一篇帖子上帮助另一个家伙。在问完问题后,我只是做了一些无聊的阅读,得到了一篇很好的文章。我想你们都会喜欢这本书。不可靠的链接。这个?Bah复制粘贴失败,对不起!是的,就是这个:)JS疯狂: