(旅行是最勞頓,最麻煩,叫人本相必現(xiàn)的時(shí)候。經(jīng)過長期苦旅行而彼此不討厭的人,才可以結(jié)交作朋友?!X鐘書)
為什么NaN在js值得一提
相信你在實(shí)際開發(fā)中,經(jīng)常遇到一下場景
const pasNumber = parseInt(undefined);
console.log(pasNumber); // NaN
console.log(typeof pasNumber === 'number'); // true
console.log(Object.prototype.toString.call(pasNumber)); // '[object Number]'
console.log(NaN === NaN); // false
業(yè)務(wù)中不可避免的有些字段是空值,但經(jīng)過轉(zhuǎn)換后會變?yōu)镹aN值,而在js中NaN的類型無論怎么判斷都是數(shù)字,并且奇怪的是NaN并不等于NaN。
如何正確的對NaN做出判斷
NaN的字面意思是Not-a-Number,其在計(jì)算機(jī)科學(xué)中屬于計(jì)算中的缺失值。
NaN的由來說明
在js中可以是同isNaN方法來進(jìn)行判斷。
isNaN = function(value) {
var n = Number(value);//此處對參數(shù)進(jìn)行強(qiáng)制類型轉(zhuǎn)換
return n !== n;
};
console.log(isNaN(NaN)); // true
console.log(isNaN('123a')); // true
console.log(isNaN([1, 2, 3])); // true
console.log(isNaN({})); // true
但我們發(fā)現(xiàn),因?yàn)槊看味枷葘⒅颠M(jìn)行數(shù)字強(qiáng)轉(zhuǎn),導(dǎo)致一些非NaN的值也被誤判成了NaN。
所以在es5又給Number添加了isNaN方法,它的源碼是這樣的。
Number.isNaN = function(value) {
return value !== value;
};
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN('123a')); // false
console.log(Number.isNaN([1, 2, 3])); // false
console.log(Number.isNaN({})); // false
因?yàn)樵趈s中,只有NaN是不等于自身的,所以Number.isNaN更為嚴(yán)謹(jǐn)。文章來源:http://www.zghlxwxcb.cn/news/detail-433892.html
所以,在后續(xù)的js編碼中,對NaN的處理我們也可以盡量使用Number.isNaN了。文章來源地址http://www.zghlxwxcb.cn/news/detail-433892.html
到了這里,關(guān)于JavaScript判斷是否為NaN的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!