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