【圖解系列】isNaN 和 Number.isNaN 函數(shù)的區(qū)別?
2022-07-01 16:13 作者:doubleyong | 我要投稿
圖解:

文字描述:
函數(shù) isNaN 接收參數(shù)后,會嘗試將這個參數(shù)轉(zhuǎn)換為數(shù)值,任何不能被轉(zhuǎn)換為數(shù)值的的值都會返回 true,因此非數(shù)字值傳入也會返回 true ,會影響 NaN 的判斷。
函數(shù) Number.isNaN 會首先判斷傳入?yún)?shù)是否為數(shù)字,如果是數(shù)字再繼續(xù)判斷是否為 NaN ,不會進行數(shù)據(jù)類型的轉(zhuǎn)換,這種方法對于 NaN 的判斷更為準(zhǔn)確。
mdn引用:
如果isNaN
函數(shù)的參數(shù)不是Number
類型,?isNaN
函數(shù)會首先嘗試將這個參數(shù)轉(zhuǎn)換為數(shù)值,然后才會對轉(zhuǎn)換后的結(jié)果是否是NaN
進行判斷。因此,對于能被強制轉(zhuǎn)換為有效的非 NaN 數(shù)值來說(空字符串和布爾值分別會被強制轉(zhuǎn)換為數(shù)值 0 和 1),返回false值也許會讓人感覺莫名其妙。
下一個版本的 ECMAScript (ES2015) 包含Number.isNaN()
函數(shù)。通過Number.isNaN(x)
來檢測變量x
是否是一個NaN
將會是一種可靠的做法。然而,在缺少Number.isNaN
函數(shù)的情況下,通過表達式(x != x)
?來檢測變量 x
是否是NaN
會更加可靠。
標(biāo)簽: