console.log(typeof(NaN) ) //number
NaN是數字類型的,但是它又可以用isNaN()檢測,isNaN() 函數用于檢查其參數是否是非數字值
isNaN() 函數通常用于檢測 parseFloat() 和 parseInt() 的結果,以判斷它們表示的是否是合法的數字
isNaN()為false的兩種情況
isNaN(123) //false
isNaN('123') //false
通俗的講isNaN()是用來檢測非合法數字的,只要不是數字,或者不可以轉換為數字的都是true
注意isNaN(true) //false isNaN(false) //false isNaN(undefined) //true
這是因為:
Number(true) //1
Number(false) //0
Number(undefined) //NaN
在ES6的Number.isNaN()擴展方法沒有出現之前,全局的isNaN()方法是比較可靠的方式判斷是否為NaN,但是在ES6出來之后,我們可以使用Number.isNaN()方法進行可靠的判斷NaN值
Number.isNaN()方法的判斷過程:首先判斷傳入的參數是否為數值類型,如果判斷為true再使用isNaN()方法進行判斷。為false就直接返回flase
所以:
Number.isNaN(undefined) //false
由此得出NaN是一個非法數字,更是一個沒有固定值的數字
所以:
NaN != NaN // true
NaN !== NaN // true