Javascript 在某些情况下,我发现(NaN==NaN)为false。这是怎么发生的?
在本例中,我发现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,您可以使用@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