判斷變量是否為 NaN


首先要明確 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);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM