undefined==null引發(fā)的兩者區(qū)別與聯(lián)系第3/3頁(yè)
更新時(shí)間:2007年12月22日 01:11:24 作者:
undefined==null引發(fā)的兩者區(qū)別與聯(lián)系
null :表示無(wú)值;
undefined : 表示一個(gè)未聲明的變量,
或已聲明但沒(méi)有賦值的變量,
或一個(gè)并不存在的對(duì)象屬性。
==運(yùn)算符將兩者看作相等。如果要區(qū)分兩者,要使用===或typeof運(yùn)算符。
使用if (!object){}兩者就都包含了
補(bǔ)充:2006.12.6
var obj = "aaa";
var nullobj;
if (obj == null || obj == undefined || (!obj) ){
alert("obj is null");
}
if (nullobj == null){
alert("obj is null");
}
if (nullobj == undefined){
alert("obj is undefined ");
}
if ( !nullobj ){
alert("! obj ");
}
關(guān)于undefined和"undefined的補(bǔ)充(2007/1/30):
JScript中用于表示未定義的undefined標(biāo)識(shí)符到底是表示什么未定義?它和"undefined"(包括"在內(nèi))又有什么區(qū)別和聯(lián)系呢?為什么有的時(shí)候可以使用undefined來(lái)和變量做比較,而有的時(shí)候又不行呢?
underfined和"undefined"的區(qū)別大家一眼就能看出來(lái)。在一般的認(rèn)知下,我們認(rèn)為undefined是JScript提供的一個(gè)"關(guān)鍵字",而"undefined"卻毫無(wú)懸念的就是一個(gè)字符串,只是引號(hào)內(nèi)的內(nèi)容長(zhǎng)得和undefined一個(gè)樣。undefined和"undefined"的區(qū)別雖然是十分明顯的,但它們的聯(lián)系也是緊密的。
仔細(xì)閱讀JScript手冊(cè),其實(shí)這個(gè)underfined是一個(gè)"已定義"的Global值,而不是它的字面意義所表達(dá)的未定義。我們看下面這個(gè)代碼示例,很有趣:
<script language="javascript">
alert(undefined);
alert(variable);
</script>
執(zhí)行的結(jié)果是:

我們稍微修改一下上面的代碼,添加一個(gè)typeof調(diào)用來(lái)看看:
<script language="javascript">
alert(typeof undefined);
alert(typeof variable);
</script>
這下結(jié)果應(yīng)該是什么呢?顯示"object"和"undefined"嗎?當(dāng)然不是了,兩個(gè)alert調(diào)用都將顯示"undefined"。
所以u(píng)ndefined是腳本引擎定義的一個(gè)常量,它在腳本引擎初始化完畢后存在。它的實(shí)際作用是用來(lái)表示一個(gè)已定義的變量的為初始化狀態(tài)(uninitialized),比如var i;,這時(shí)這個(gè)i的值就是undefined,而i是實(shí)實(shí)在在define了的,只是未初始化。這時(shí)我們就可以寫(xiě)這樣的表達(dá)式來(lái)對(duì)i做判斷,比如if ( i == undefined )。如果從未在代碼中出現(xiàn)過(guò)的變量被使用,這時(shí)的未定義的概念就是不undefined所描述的未初始化了,而是說(shuō)明該變量完全未被登記到腳本引擎的上下文中。使用類(lèi)似if ( abc == undefined )的語(yǔ)句,將得到類(lèi)似上圖中的第二個(gè)錯(cuò)誤提示。
在實(shí)際使用中,如果使用typeof來(lái)判斷變量是否未定義,是可以完全兼容未定義(undefined)和未初始化(uninitialized)兩種情況的,只是很多時(shí)我不喜歡使用 if ( typeof xxx == 'undefined' ) 這樣的寫(xiě)法,因?yàn)閘iteral的字符串容易拼寫(xiě)錯(cuò)誤,對(duì)用習(xí)慣了的強(qiáng)類(lèi)型語(yǔ)言的角度來(lái)看也顯得不專(zhuān)業(yè)。
您可能感興趣的文章:
- js判斷undefined類(lèi)型,undefined,null, 的區(qū)別詳細(xì)解析
- JavaScript null和undefined區(qū)別分析
- JavaScript Undefined,Null類(lèi)型和NaN值區(qū)別
- JS基礎(chǔ)之undefined與null的區(qū)別分析
- Javascript 中 null、NaN和undefined的區(qū)別總結(jié)
- javascript中的undefined 與 null 的區(qū)別 補(bǔ)充篇
- 詳解JavaScript中undefined與null的區(qū)別
- js中 關(guān)于undefined和null的區(qū)別介紹
- JavaScript中undefined和null的區(qū)別
- 一文讓你徹底弄懂js中undefined和null的區(qū)別
相關(guān)文章
微信小程序使用map組件實(shí)現(xiàn)獲取定位城市天氣或者指定城市天氣數(shù)據(jù)功能
這篇文章主要介紹了微信小程序使用map組件實(shí)現(xiàn)獲取定位城市天氣或者指定城市天氣數(shù)據(jù)功能,涉及微信小程序map組件結(jié)合微信API獲取天氣信息相關(guān)操作技巧,需要的朋友可以參考下2019-01-01一文詳解Web Audio瀏覽器采集麥克風(fēng)音頻數(shù)據(jù)
這篇文章主要為大家介紹Web Audio瀏覽器采集麥克風(fēng)音頻數(shù)據(jù)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03JavaScript自定義日歷實(shí)現(xiàn)簽到功能
這篇文章主要為大家詳細(xì)介紹了JavaScript自定義日歷實(shí)現(xiàn)簽到功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08js實(shí)現(xiàn)鼠標(biāo)懸停圖片上時(shí)滾動(dòng)文字說(shuō)明的方法
這篇文章主要介紹了js實(shí)現(xiàn)鼠標(biāo)懸停圖片上時(shí)滾動(dòng)文字說(shuō)明的方法,涉及js操作鼠標(biāo)事件的使用技巧,需要的朋友可以參考下2015-02-028個(gè)開(kāi)發(fā)者必須知道的JavaScript深層概念(推薦)
JavaScript有一個(gè)名為“調(diào)用堆?!保–all Stack)的簡(jiǎn)單列表,它逐一管理任務(wù)(堆棧算法),但是當(dāng)異步任務(wù)被傳遞時(shí),JavaScript會(huì)把它彈出到web API,瀏覽器就會(huì)處理它,這篇文章主要介紹了8個(gè)開(kāi)發(fā)者必須知道的JavaScript深層概念,需要的朋友可以參考下2022-10-10