欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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é)果是: 

   undefined.png
我們稍微修改一下上面的代碼,添加一個(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è)。


相關(guān)文章

最新評(píng)論