为什么typeof NaN返回“数字”?

只是出于好奇。

typeof NaN数字似乎不太合逻辑。顺便说一句,就像NaN === NaNNaN ==

NaN返回假。这是javascript的特性之一,还是有原因呢?

编辑:谢谢你的回答。但是,要让所有人适应现实并非易事。阅读答案和Wiki我了解得更多,但仍然有类似

与NaN的比较始终会返回无序结果,即使与自身进行比较也是如此。比较谓词是信令或非信令,信令版本表示此类比较的无效异常。相等和不相等谓词是无信号的,因此x

= x返回false可以用来测试x是否为安静的NaN。

只是让我的头旋转。如果有人可以用人类(而不是数学家)可读的语言来翻译它,我将不胜感激。

回答:

这意味着不是数字。它不是javascript的特性,而是通用的计算机科学原理。

从http://en.wikipedia.org/wiki/NaN:

返回NaN的操作有以下三种:

以NaN作为至少一个操作数的运算

不确定的形式

  • 除法0/0,∞/∞,∞/-∞,-∞/∞和-∞/-∞
  • 乘法0×∞和0×-∞
  • 幂1 ^∞
  • 加法器∞+(-∞),(-∞)+∞和等效减法。

具有复杂结果的实际操作:

  • 负数的平方根
  • 负数的对数
  • 90度(或π/ 2弧度)的奇数倍的切线
  • 小于-1或大于+1的数字的反正弦或余弦。

所有这些值可能不相同。对NaN的简单测试是测试value == value是否为假。

以上是 为什么typeof NaN返回“数字”? 的全部内容, 来源链接: utcz.com/qa/435006.html

回到顶部