Javascript 在某些情况下,我发现(NaN==NaN)为false。这是怎么发生的?

Javascript 在某些情况下,我发现(NaN==NaN)为false。这是怎么发生的?,javascript,Javascript,在本例中,我发现NaN==NaN为false。我不明白为什么会发生这种情况,因为这两种类型都是数字,而值是相同的。所以这是怎么可能的。南的情况很少见。它们(对自身)也不等于任何东西 因此,当您测试NaN==NaN时,它返回false 要测试NaN,您可以使用@Bergi注释: var x = NaN; if(x !== x){ console.log('It is NaN'); } 将此视为未知,因此 未知永远不会和另一个相同 未知…未知(NaN)=未知(NaN)//错误 另一个例子: 假

在本例中,我发现NaN==NaN为false。我不明白为什么会发生这种情况,因为这两种类型都是数字,而值是相同的。所以这是怎么可能的。

南的情况很少见。它们(对自身)也不等于任何东西

因此,当您测试
NaN==NaN
时,它返回false

要测试NaN,您可以使用@Bergi注释:

var x = NaN;
if(x !== x){
  console.log('It is NaN');
}

将此视为未知,因此

未知永远不会和另一个相同 未知…未知(NaN)=未知(NaN)//错误

另一个例子:

假设x='a',y='b'都不是数字,所以x=NaN,y=NaN,而是x=y

IEEE 754浮点数规范(所有语言都使用浮点数)指出,NaN永远是不相等的。

多么美妙的例子

对NaN的测试

等式运算符(==和===)不能用于根据 楠。请改用Number.isNaN()或isNaN()


NaN的
在设计上从来都不相等

Math.log(-1) is NaN

Math.log(-2) is NaN

这是否意味着
Math.log(-1)==Math.log(-2)

我想知道这是真的时候你发现了哪些情况???你可能会发现
isNaN(num)
很有用。有关详细信息,请参阅。试试。。。。警报(NaN==NaN)将始终为false。。在某些情况下并非如此……尽管
NaN==NaN
的任一侧包含相同的值,并且它们的类型是
Number
,但它们并不相同。根据ECMA-262,
==
==
的任何一侧包含
NaN
,则会产生假值。你可以在这里找到一个详细的规则-我不认为它只是Javascript。我认为这是非常常见的,IEEE-754甚至可能要求这样做。您可以使用相等运算符轻松测试NaN:
x!==x
:-)教育继续
Math.log(-1) is NaN

Math.log(-2) is NaN