NaN不等于NaN

为什么说NaN不等于NaN,难道就是因为语法规定吗

阅读 7.5k
6 个回答

NaN就是not a number的意思,相当于一个描述性的变量,不存储内容。因此NaN != NaN

NaN = not a number.

例:
'S'不是一个数字吧,
'B'也不是一个数字.

'S'=='B'成立吗...

定義NaN不等於NaN是非常合理的, 反過來會有更多麻煩, 比如parseInt("a")和parseInt("b")會相等

你可以理解为语法规定
NaN = not a number

NaN不是一个数字所以他肯定不等于NaN

What is the rationale for all comparisons returning false for IEEE754 NaN values?里,IEEE委员会的一个成员给出了解释(在文中第二个黄色背景的段落),即NaN诞生初期所受到的计算机软、硬件的制约:

当初,还不存在isnan()函数(文中采用的是更广泛的"predicate(谓词)")。那么,如果遇到变量为NaN该怎么办?

文中说:"... computation would be best stopped rather than continued for an indefinite time to an Indefinite conclusion"。

我推断,当时那么简陋,估计也不存在什么错误处理机制;一切都靠条件判断进行流程控制。而为了在遇到NaN时停止运行,只能让原本正常通过的条件判断"x == x"变得不通过。于是,计算机领域的一大奇闻就此诞生。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题