为什么 在 Javascript中NaN === NaN
返回?false
> undefined === undefined
true
> NaN === NaN
false
> a = NaN
NaN
> a === a
false
在文档页面上,我看到了这个:
针对 NaN 进行测试
等式运算符 (
==
and===
) 不能用于针对 测试值NaN
。改为使用isNaN
。
有没有可以回答这个问题的参考资料?这将是受欢迎的。
为什么 在 Javascript中NaN === NaN
返回?false
> undefined === undefined
true
> NaN === NaN
false
> a = NaN
NaN
> a === a
false
在文档页面上,我看到了这个:
针对 NaN 进行测试
等式运算符 (
==
and===
) 不能用于针对 测试值NaN
。改为使用isNaN
。
有没有可以回答这个问题的参考资料?这将是受欢迎的。
严格的回答:因为 JS 规范是这么说的:
- 如果 Type(x) 是 Number,那么
- 如果 x 是 NaN,则返回 false。
- 如果 y 是 NaN,则返回 false。
有用的答案:浮点数的 IEEE 754 规范(所有语言都使用浮点数)说 NaN 永远不相等。
此行为由IEEE-754 标准(JavaScript 规范在这方面遵循)指定。
有关扩展讨论,请参阅所有比较返回 false 的 IEEE754 NaN 值的基本原理是什么?
尽管任一侧NaN===NaN
包含相同的值并且它们的类型是Number
但它们不相同。根据 ECMA-262,任何一方==
或===
包含NaN
则将导致错误值。
您可以在这里找到详细规则-