首先要明確 NaN 的一個特性, NaN不能用相等操作符(== 和 ===) 來判斷, NaN === NaN 會返回 false;
下面是測試代碼:
console.log(isNaN('1')) // false
console.log(isNaN('')) // false
console.log(isNaN(' ')) // false
console.log(isNaN('35,37')) // true
console.log(isNaN('123ABC')) // true
console.log(isNaN('abcde')) // true
console.log(isNaN(true)) // false
console.log(isNaN(1)) // false
console.log(isNaN(Infinity)) // false
console.log(new Date().toString()) // Wed Apr 04 2018 00:49:06 GMT+0800 (中國標准時間)
console.log(isNaN(new Date())) // false
console.log(isNaN(new Date().toString())) // true
console.log(isNaN(NaN)) // true
console.log(isNaN(0/0)) // true
console.log(isNaN(0/3)) // false
console.log(isNaN(null)) // false
console.log('---------------------------------------------------');
console.log('35,37' === '35,37'); // true
console.log('123ABC' === '123ABC'); // true
console.log('abcde' === 'abcde'); // true
console.log(new Date().toString() === new Date().toString()); // true
console.log(0/3 === 0/3); // true
console.log(3/0 === 3/0); // true
console.log(0 === 0); // true
console.log('' === ''); // true
console.log(Infinity === Infinity); // true
console.log(true === true); // true
console.log(null === null); // true
console.log(1 === 1); // true
console.log(10 === 10); // true
console.log('---------------------重點來了------------------------------');
console.log(0/0 === 0/0); // false
console.log(typeof(0/0)); // 'number'
console.log(typeof 0/0); // NaN
console.log(typeof(NaN)); // 'number'
console.log(typeof NaN); // 'number'
console.log(NaN === NaN); // false
console.log('---------------------區別 0/0 和 NaN------------------------------');
console.log(typeof 0/0); // NaN
console.log(typeof NaN); // 'number'
console.log(typeof va); // 'number'
console.log('---------------------方法總結------------------------------');
/*
綜上 判斷一個變量 到底是不是 NaN, 最好的辦法就是 利用 NaN不能用相等操作符(== 和 ===) 來判斷, NaN === NaN 會返回 false,
雖然, 0/0 === 0/0 也會返回 false,但是 0/0 它也只是個表達式而已,算出來的結果還是 NaN, 一般也沒有需要這樣寫的情況,
所以 我們還是可以用 NaN === NaN 會返回 false 這樣的特性,來進行 NaN 的判斷
*/
var va = NaN;
if(va !== va){
console.log('這個變量 是 ---->' + va);
}
