JavaScript undefined及null區(qū)別實(shí)例解析
在JavaScript中,將一個(gè)變量賦值為undefined或null,老實(shí)說,幾乎沒區(qū)別。
var a = undefined;
var a = null;
上面代碼中,a變量分別被賦值為undefined和null,這兩種寫法幾乎等價(jià)。
undefined和null在if語句中,都會(huì)被自動(dòng)轉(zhuǎn)為false,相等運(yùn)算符甚至直接報(bào)告兩者相等。
if (!undefined) console.log(’undefined is false’);// undefined is false
if (!null) console.log(’null is false’);// null is false
undefined == null// true
上面代碼說明,兩者的行為是何等相似!
既然undefined和null的含義與用法都差不多,為什么要同時(shí)設(shè)置兩個(gè)這樣的值,這不是無端增加JavaScript的復(fù)雜度,令初學(xué)者困擾嗎?Google公司開發(fā)的JavaScript語言的替代品Dart語言,就明確規(guī)定只有null,沒有undefined!
Undefined
Undefined 類型只有一個(gè)值,即 undefined。
聲明了變量,但未進(jìn)行初始化時(shí),這個(gè)變量的值就是 undefined,例如:
var message;alert(message == undefined); // true
字面量 undefined 的主要目的是用于比較,而ECMAScript 3.0之前的版本中并沒有規(guī)定這個(gè)值。引入這個(gè)值是為了正式區(qū)分空對(duì)象指針 與 未經(jīng)初始化的變量。
Null
Null 類型是第二個(gè)只有一個(gè)值的類型,即 null。從邏輯角度來看,null 表示一個(gè)空對(duì)象指針,因此,當(dāng)使用 typeof 操作符檢測(cè) null 值時(shí),會(huì)返回“object”,如下所示:
var car = null;alert(typeof car); // 'object'
如果定義的變量準(zhǔn)備在將來用于保存對(duì)象,那么最好將該變量初始化為 null,而不是其他值,這樣一來只要直接檢查null值就可以知道該變量是否保存了一個(gè)對(duì)象的引用,例如:
if (car != null) {dosomthing}
實(shí)際上, undefined值是派生自 null值的,因?yàn)樗麄冊(cè)趫?zhí)行相等性測(cè)試(==)時(shí)要返回 true
alert(null == undefined) // true
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XHTML 1.0:標(biāo)記新的開端2. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案3. ASP動(dòng)態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗(yàn)分享4. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera5. jsp文件下載功能實(shí)現(xiàn)代碼6. 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法7. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)8. 告別AJAX實(shí)現(xiàn)無刷新提交表單9. CSS3中Transition屬性詳解以及示例分享10. 怎樣才能用js生成xmldom對(duì)象,并且在firefox中也實(shí)現(xiàn)xml數(shù)據(jù)島?
