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