null與undefined的區(qū)別
一般我們來(lái)解釋null和undefined的區(qū)別時(shí),會(huì)把null理解成空,而undefined理解成未定義,但是實(shí)際上這樣理解并不是很清晰.
時(shí)間線追溯到1995年,第一代JS誕生時(shí),像Java一樣,只設(shè)置了一個(gè)null來(lái)作為表示無(wú),根據(jù)C語(yǔ)言的傳統(tǒng),null的設(shè)計(jì)可以自動(dòng)被轉(zhuǎn)為0.
作者在后續(xù)的更新中,覺(jué)得光有一個(gè)null還不夠用,JS最初的版本是沒(méi)有錯(cuò)誤處理機(jī)制的,發(fā)生數(shù)據(jù)類型不匹配的時(shí)候,往往會(huì)自動(dòng)的轉(zhuǎn)換類型,如果null自動(dòng)的轉(zhuǎn)為0,會(huì)讓人不易找到錯(cuò)誤.
所以后續(xù)又有了undefined的誕生.
兩者本質(zhì)的區(qū)別在于null時(shí)表示為無(wú)的一個(gè)對(duì)象,在轉(zhuǎn)為數(shù)值的時(shí)候是0,undefined是表示為無(wú)的原始值,轉(zhuǎn)換為數(shù)值是為NaN.


標(biāo)簽: