面试题:typeof NaN 的结果是什么?

typeof NaN 的结果是 "number"

解释:

  • NaN“Not-a-Number” 的缩写,表示“不是一个数字”。
  • 尽管它的名字是“不是数字”,但在 JavaScript 的类型系统中,NaN 被归类为 number 类型。
  • 这是因为 NaN 是数学运算中无效或无法表示的结果,它本身是一个特殊的数字值,而不是一个独立的类型。

示例:

typeof NaN           // "number"
typeof 123           // "number"
typeof Infinity      // "number"
typeof -Infinity     // "number"

// NaN 的产生场景
0 / 0                // NaN
Math.sqrt(-1)        // NaN
parseInt("hello")    // NaN

// 虽然 typeof 是 "number",但 NaN 不等于任何值(包括自己)
NaN === NaN          // false
NaN == NaN           // false

如何检查一个值是否为 NaN?

由于 NaN !== NaN,不能用 === 检查。应使用:

isNaN(value)           // 会先尝试转换类型(不推荐)
Number.isNaN(value)    // 只有当 value 确实是 NaN 时才返回 true(推荐)

总结:

NaN 是一个特殊的数字值,表示无效的数学运算结果,因此 typeof NaN 返回 "number"

THE END
喜欢就支持一下吧
点赞9 分享