目錄函數
NaN == NaN NaN === NaN // falseprototype
[NaN ].includes(NaN ) // truecode
若是傳入的參數不是Number
類型,會先調用Number
方法 轉換爲Number
類型ip
isNaN(NaN); // true isNaN(undefined); // true isNaN({}); // true isNaN([]) // false isNaN(['1234.23']) // false isNaN(true); // false isNaN(null); // false isNaN(37); // false // strings isNaN("37"); // false: 能夠被轉換成數值37 isNaN("37.37"); // false: 能夠被轉換成數值37.37 isNaN("37,5"); // true isNaN('123ABC'); // true: parseInt("123ABC")的結果是 123, 可是Number("123ABC")結果是 NaN isNaN(""); // false: 空字符串被轉換成0 isNaN(" "); // false: 包含空格的字符串被轉換成0 // dates isNaN(new Date()); // false isNaN(new Date().toString()); // true isNaN("blabla") // true: "blabla"不能轉換成數值 // 轉換成數值失敗, 返回NaN
NaN
的加強版本,和全局函數 isNaN()
相比,該方法不會強制將參數轉換成數字,只有在參數是真正的數字類型,且值爲 NaN
的時候纔會返回 true
。字符串
Number.isNaN(NaN); // true Number.isNaN(Number.NaN); // true Number.isNaN(0 / 0) // true // 下面這幾個若是使用全局的 isNaN() 時,會返回 true。 Number.isNaN("NaN"); // false,字符串 "NaN" 不會被隱式轉換成數字 NaN。 Number.isNaN(undefined); // false Number.isNaN({}); // false Number.isNaN("blabla"); // false // 下面的都返回 false Number.isNaN(true); Number.isNaN(null); Number.isNaN(37); Number.isNaN("37"); Number.isNaN("37.37"); Number.isNaN(""); Number.isNaN(" ");
參考:get