前端小知识点(1):undefined和null区别
目錄
一、奇怪點(diǎn)
二、歷史原因
三、具體區(qū)別
四、代碼演示
五、運(yùn)行結(jié)果
一、奇怪點(diǎn)
有點(diǎn)奇怪的是,JavaScript語(yǔ)言居然有兩個(gè)表示"無(wú)"的值:undefined和null。這是為什么?
二、歷史原因
1995年JavaScript誕生時(shí),最初像Java一樣,只設(shè)置了null作為表示"無(wú)"的值。根據(jù)C語(yǔ)言的傳統(tǒng),null被設(shè)計(jì)成可以自動(dòng)轉(zhuǎn)為0。
但是,JavaScript的設(shè)計(jì)者,覺(jué)得這樣做還不夠,主要有以下兩個(gè)原因。
1. null像在Java里一樣,被當(dāng)成一個(gè)對(duì)象。但是,JavaScript的數(shù)據(jù)類型分成原始類型(primitive)和合成類型(complex)兩大類,作者覺(jué)得表示"無(wú)"的值最好不是對(duì)象。
2. JavaScript的最初版本沒(méi)有包括錯(cuò)誤處理機(jī)制,發(fā)生數(shù)據(jù)類型不匹配時(shí),往往是自動(dòng)轉(zhuǎn)換類型或者默默地失敗。作者覺(jué)得,如果null自動(dòng)轉(zhuǎn)為0,很不容易發(fā)現(xiàn)錯(cuò)誤。
因此,作者又設(shè)計(jì)了一個(gè)undefined。
這里注意:先有null后有undefined,出來(lái)undefined是為了填補(bǔ)之前的坑。
三、具體區(qū)別
JavaScript的最初版本是這樣區(qū)分的:null是一個(gè)表示"無(wú)"的對(duì)象(空對(duì)象指針),轉(zhuǎn)為數(shù)值時(shí)為0;undefined是一個(gè)表示"無(wú)"的原始值,轉(zhuǎn)為數(shù)值時(shí)為NaN。
四、代碼演示
console.log( 1 + null ); console.log( 1 + undefined );五、運(yùn)行結(jié)果
?
總結(jié)
以上是生活随笔為你收集整理的前端小知识点(1):undefined和null区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: QT连接PostSql (小白教程)
- 下一篇: 前端学习(3325):Mdn说闭包