方法一:window.isNaN()
注意: window.isNaN 只對數值有效,如果傳入其他值,會被先轉成數值。比如,傳入字符串的時候,字符串會被先轉成NaN,所以最后返回true,這一點要特別引起注意。也就是說,isNaN為true的值,有可能不是NaN,而是一個字符串。
(不是數值會先調用 Number 方法轉化為數值)
方法二:Number.isNaN(value)(ES6語法,存在兼容性問題)
1. 首先判斷 value 類型是不是 number; 2. 然后判斷 value 是不是 NaN
推薦方法:
Number.isNaN = Number.isNaN || function(value) { return (typeof value) === 'number' && window. isNaN(value); }
補充知識:
- NaN 是 JavaScript 之中唯一不等於自身的值
-
Object.is() 是 ES6 用來比較兩個值是否嚴格相等,與嚴格比較運算符(===)的行為基本一致。除了對 +0 和 -0 以及 NaN 的判斷
NaN === NaN //false Object.is(NaN, NaN) //true +0 === -0 //true Object.is(+0, -0) //false