在JavaScript中,NaN是一个特殊的值,用于表示无效的数字运算结果。尽管名为“非数字”,NaN 的类型实际上是 "number"。它是全局对象 Number 的属性,但直接使用 NaN 更常见。NaN 的独特之处在于它是唯一不等于自身的值,这使得常规比较无法检测它。
一、NaN 的类型
类型判断:
使用 typeof 操作符时,NaN 的类型是 "number"。
javascript1console.log(typeof NaN); // 输出: "number"
这是因为 NaN 是数字类型中的一个特殊值,表示非法的数字运算(如 0/0、parseInt("abc"))。
本质:
NaN 是全局对象 Number 的一个静态属性(Number.NaN),但直接写 NaN 更常见。

二、如何判断 NaN
由于 NaN 是唯一一个不等于自身的值,不能直接用比较运算符判断。以下是可靠的方法:
方法1:isNaN() 函数
作用:检查值是否为 NaN 或非数字值。
javascript1console.log(isNaN(NaN)); // true
2console.log(isNaN("abc")); // true
3console.log(isNaN(123)); // false
方法2:Number.isNaN()
作用:严格检查值是否为 NaN,不会进行类型转换。
javascript1console.log(Number.isNaN(NaN)); // true
2console.log(Number.isNaN("abc")); // false(字符串不是NaN)
3console.log(Number.isNaN(123)); // false
方法3:与自身比较
利用 NaN !== NaN 的特性:
javascript1function isReallyNaN(value) {
2 return value !== value;
3}
4console.log(isReallyNaN(NaN)); // true
5console.log(isReallyNaN(123)); // false
总结
类型:NaN 是 number 类型。
判断:优先使用 Number.isNaN() 避免隐式转换的干扰;若需兼容旧环境,可用 value !== value 手动判断。
注意:避免直接比较 x === NaN,因为结果永远为 false。
在JavaScript中判断一个值是否为NaN(Not-a-Number),可以使用以上几种方法。使用Number.isNaN()函数、通过比较自身的方式,跟着小编一起详细了解下吧。