有兩種情況會(huì)出現(xiàn)NaN
- 1.隱式轉(zhuǎn)換失敗:
在表達(dá)式中出現(xiàn)-、*砂心、/等數(shù)學(xué)運(yùn)算符時(shí),JS引擎會(huì)在計(jì)算之前隱式轉(zhuǎn)換運(yùn)算符兩邊的變量為number類型(創(chuàng)建一個(gè)包裝對(duì)象蛇耀?)辩诞,有一個(gè)轉(zhuǎn)化失敗的運(yùn)算結(jié)果都是返回NaN - 2.強(qiáng)制轉(zhuǎn)換失敗
通過(guò)使用parseInt、parseFloat或Numer將一個(gè)非數(shù)值類型轉(zhuǎn)換為數(shù)字時(shí)纺涤,(注意點(diǎn):Number轉(zhuǎn)換要嚴(yán)格于前兩者)
當(dāng)一個(gè)表達(dá)式返回了NaN時(shí)译暂,表示該表達(dá)式中轉(zhuǎn)化的變量接著返回了無(wú)效的結(jié)果抠忘,并不是說(shuō)返回了一個(gè)確切的值,如果非要是說(shuō)NaN是一個(gè)值的話外永,那么NaN就是除去數(shù)值以外的一個(gè)不確切的值崎脉,正則表達(dá)值可以描述為[/^\d/]。所以NaN!=NaN,因?yàn)樗硎镜闹皇且粋€(gè)范圍伯顶;
注意點(diǎn):和NaN不同的是囚灼,undefined和null都各自表示的唯一確切一種狀態(tài)值;