在JavaScript中,NaN是一個特殊的值,用于表示無效的數(shù)字運算結(jié)果。盡管名為“非數(shù)字”,NaN 的類型實際上是 "number"。它是全局對象 Number 的屬性,但直接使用 NaN 更常見。NaN 的獨特之處在于它是唯一不等于自身的值,這使得常規(guī)比較無法檢測它。
一、NaN 的類型
類型判斷:
使用 typeof 操作符時,NaN 的類型是 "number"。
javascript1console.log(typeof NaN); // 輸出: "number"
這是因為 NaN 是數(shù)字類型中的一個特殊值,表示非法的數(shù)字運算(如 0/0、parseInt("abc"))。
本質(zhì):
NaN 是全局對象 Number 的一個靜態(tài)屬性(Number.NaN),但直接寫 NaN 更常見。

二、如何判斷 NaN
由于 NaN 是唯一一個不等于自身的值,不能直接用比較運算符判斷。以下是可靠的方法:
方法1:isNaN() 函數(shù)
作用:檢查值是否為 NaN 或非數(shù)字值。
javascript1console.log(isNaN(NaN)); // true
2console.log(isNaN("abc")); // true
3console.log(isNaN(123)); // false
方法2:Number.isNaN()
作用:嚴格檢查值是否為 NaN,不會進行類型轉(zhuǎn)換。
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
總結(jié)
類型:NaN 是 number 類型。
判斷:優(yōu)先使用 Number.isNaN() 避免隱式轉(zhuǎn)換的干擾;若需兼容舊環(huán)境,可用 value !== value 手動判斷。
注意:避免直接比較 x === NaN,因為結(jié)果永遠為 false。
在JavaScript中判斷一個值是否為NaN(Not-a-Number),可以使用以上幾種方法。使用Number.isNaN()函數(shù)、通過比較自身的方式,跟著小編一起詳細了解下吧。