一尘不染

为什么NaN === NaN为假?[重复]

javascript

为什么NaN === NaN返回false Javascript?

> undefined === undefined
true
> NaN === NaN
false
> a = NaN
NaN
> a === a
false

在文档页面上,我看到以下内容:

## 针对NaN的测试

相等运算符(=====)不能用于测试的值NaN。使用isNaN代替。

有没有参考资料可以回答这个问题?不客气。


阅读 352

收藏
2020-05-01

共1个答案

一尘不染

严格的回答 :因为JS规范是这样说的:

  • 如果Type(x)是Number,则
    • 如果x为NaN,则返回false。
    • 如果y为NaN,则返回false。

有用的答案 :浮点数的IEEE 754规范(所有语言都将其用于浮点)指出NaN绝不相等。

2020-05-01