小编典典

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

all

只是出于好奇。

数字似乎不太合乎逻辑typeof NaN。顺便说一句,就像NaN === NaNNaN == NaN返回 false 一样。这是
javascript 的特性之一,还是有原因?

编辑:感谢您的回答。不过,要吸引人并不是一件容易的事。阅读答案和维基,我理解得更多,但仍然像这样的句子

与 NaN 的比较始终返回无序结果,即使与自身进行比较也是如此。比较谓词是信令或非信令,信令版本表示此类比较的无效异常。等式和不等式谓词是无信号的,因此
x = x 返回 false 可用于测试 x 是否是安静的 NaN。

只是让我头晕目眩。如果有人可以将其翻译成人类(而不是数学家)可读的语言,我将不胜感激。


阅读 67

收藏
2022-06-30

共1个答案

小编典典

这意味着不是一个数字。这不是 javascript 的特性,而是常见的计算机科学原理。

来自http://en.wikipedia.org/wiki/NaN

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

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

不确定的形式

  • 分割 0/0、∞/∞、∞/-∞、-∞/∞ 和 -∞/-∞
  • 乘法 0×∞ 和 0×−∞
  • 幂 1^∞
  • 加法 ∞ + (-∞)、(-∞) + ∞ 和等效减法。

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

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

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

2022-06-30