isNaN(X) 函數用於檢查其參數是不是非數字值。函數
若是 x 是特殊的非數字值 NaN(或者能被轉換爲這樣的值 )返回的值就是 true。若是 x 是其餘值,則返回 false。spa
首先,咱們先來了解一下什麼是NAN,NAN即note a number,NaN 屬性用於引用特殊的非數字值。而isNaN() 函數一般用於檢測 parseFloat() 和 parseInt() 的結果,以判斷它們表示的是不是合法的數字。固然也能夠用 isNaN() 函數來檢測算數錯誤,好比用 0 做除數的狀況。code
可是在實際的工做中,使用isNAN()方法會出現一些難以解釋的現象,那是由於該方法運行中進行了「隱式轉換」,下面列出了一些案例;blog
isNaN(NaN); // true isNaN(undefined); // true isNaN({}); // true isNaN(true);// false isNaN(null); // false isNaN(37); // false // strings isNaN("37"); // false: "37"、 「37」將轉換爲一個數字37,因此不是一個NAN; isNaN("37.37"); // false: "37.37" 將被轉換爲 37.37 ,因此不是一個 NaN isNaN("123ABC"); // true: 字符串「123ABC」parseInt("123ABC") 方法後爲 123,可是這裏是使用Number()方法, Number("123ABC")獲得的結果爲 NaN isNaN(""); // false: 空字符串將被轉換爲數字0,它不是一個NAN,因此爲false isNaN(" "); // false: 一個空格的字符串被轉換爲數字0,0不是一個NAN,因此爲false // dates isNaN(new Date()); // false isNaN(new Date().toString()); // true // 這裏使用了toString()方法轉爲字符串,因此很是確定的得出它是一個NAN; isNaN("blabla") // true: 字符串"blabla" 將被轉換爲一個number. // 解析爲數字失敗並返回NaN
從上面的案例能夠看出,isNAN()方法括號內的內容若是是字符串數據類型,或者布爾類型,將會使用Number()方法轉換數字類型,若是轉換後爲NAN則返回true,反之則返回false;字符串