NaN, isNaN, Number.isNaN

NaN: 是一個數據類型,屬於Number,從這個角度來說,Es6中給出了一個方法Number.isNaN, 只要不是NaN類型的都爲false,舉幾個例子:

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0);      // true
Number.isNaN('NaN');      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN('blabla');   // false
Number.isNaN([])          // false

Number.isNaN(true);       //false
Number.isNaN(null);       //false
Number.isNaN(37);         //false
Number.isNaN('37');       //false
Number.isNaN('37.37');    //false
Number.isNaN('');         //false
Number.isNaN(' ');        //false

但是,如果從NaN的全稱來說,not a number,判斷不是一個數字,Number.isNaN就不好用了,字符串‘aaa’確實不是一個數字啊,如果非要想用Number.isNaN(),讓它返回true,那麼就必須在加上一句:

var a = Number('aaa');
console.log(Number.isNaN(a)); // true

Number.isNaN()這個方法比較靈活,把判斷的權利交給用戶,如果想判斷一個值是否可以轉成數字,可以這樣寫:

返回true就是不能轉

var a = parseInt('123aaa');
console.log(Number.isNaN(a)); // false
var a = parseFloat('123.12aa');
console.log(Number.isNaN(a));// false

對於全局方法isNaN()來說,可以直接判斷字符串是否是數字,isNaN依賴於Number()方法,如果Number()方法能轉成數字類型,那麼返回false。這個方法不穩定,慎用!

isNaN(NaN);       // true
isNaN(undefined); // true
isNaN({});        // true
isNaN([]);        //false

isNaN(true);      // false
isNaN(null);      // false
isNaN(37);        // false
isNaN('37');      // false
isNaN('37.37');   // false
isNaN('123ABC');  // true 
isNaN('');        // false
isNaN(' ');       // false
isNaN(new Date()); // false
isNaN(new Date().toString());  // true
isNaN('blabla');   // true



發佈了61 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章