NaN
- NaN (Not a Number)在w3c 中定義的是非數(shù)字的特殊值挟伙,它的數(shù)據(jù)類型為Number糙及,所以并不是任何非數(shù)字類型的值都是NaN,只有在算術(shù)運算或數(shù)據(jù)類型轉(zhuǎn)換時才會是NaN;我們在運用方法parseInt()和parseFloat()時遇到不能轉(zhuǎn)化時郭蕉,就會返回NaN疼邀;
parseInt('abc')//NaN;
parseFloat('a'-2)//NaN;
- 為什么說NaN是個坑呢喂江?首先召锈,它自己和自己都不是相等的,難道這還會不坑?
NaN==NaN//false;
NaN===NaN//false;
所以获询,我們就不要用NaN來作判斷條件了涨岁,否則就坑死了
然后,非數(shù)字字符串轉(zhuǎn)為數(shù)字類型時返回NaN吉嚣,按理梢薪,字符串不是數(shù)字類型,我們運用isNaN()時應(yīng)該返回false尝哆,但是卻返回了true秉撇;我們可以運用Number.isNaN()來解決這一問題!
Number.isNaN('0/0') //string not number ---false
isNaN('0/0') //arithmethic ilegal (NaN)算數(shù) ---true
Number.isNaN('123') //string not number ---false
isNaN('123') //convert to number 轉(zhuǎn)化---false
Number.isNaN('Hello') //string not number ---false
isNaN('Hello') //convert fail(NaN) 轉(zhuǎn)化失敗---true
Number.isNaN('') /isNaN(null) //string not number ---false
Number.isNaN(true) //bool not number ---false
isNaN('') /isNaN(null) //convert to 0 ---false
isNaN(true) //convert to 1 ---false
Number.isNaN(undefined)//---false
//undefined not number ---flase
isNaN(undefined) //convert fail ---true
isNaN(parseInt(undefined))//----true
isNaN(parseInt(null))//---true
isNaN(parseInt(''))//---true
isNaN(parseInt(true))//----true
Number.isNaN('NaN') //---false
isNaN('NaN') //---true
Number.isNaN(NaN) //---true
isNaN(NaN) //---true
注* 關(guān)于各個數(shù)據(jù)類型之間的轉(zhuǎn)換
- 操作時秋泄,一定要注意頁面的隱式轉(zhuǎn)換八龉荨!帶各種靈異事件的恒序;否則就哭去吧瘦麸!
- 頁面獲取的基本都是字符串類型,取值時一定注意轉(zhuǎn)化哦歧胁!