typeof NaN 的结果

理解 NaN 的类型和特殊性质

问题

typeof NaN 的结果是什么?

解答

NaN 表示”不是一个数字”(Not a Number),是 JavaScript 中的一个特殊值,用于表示数学运算失败的结果。

typeof NaN; // "number"

虽然 NaN 的字面意思是”不是数字”,但它的类型却是 "number"。这是因为 NaN 是数字类型中的一个特殊”警戒值”(sentinel value),专门用来标识数学运算的错误情况。

NaN 的特殊性质

NaN 是 JavaScript 中唯一一个不等于自身的值:

NaN === NaN; // false
NaN !== NaN; // true

这种非自反(non-reflexive)特性使得 NaN 无法通过相等运算符来判断。如果需要检测一个值是否为 NaN,应该使用 Number.isNaN()isNaN() 方法。

Number.isNaN(NaN); // true
Number.isNaN(123); // false

关键点

  • typeof NaN 返回 "number",因为 NaN 是数字类型的特殊值
  • NaN 用于表示数学运算失败的结果
  • NaN 是唯一不等于自身的值(NaN !== NaNtrue
  • 应使用 Number.isNaN() 来检测 NaN,而不是相等运算符