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

JavaScript中undefined和is?not?defined的區(qū)別與異常處理

 更新時(shí)間:2022年03月15日 09:59:34   作者:天山牧童  
這篇文章主要給大家介紹了關(guān)于JavaScript中undefined和is?not?defined的區(qū)別與異常處理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

Javascript中undefined和not defined有什么區(qū)別?

概念上的解釋:

undefined是javascript語(yǔ)言中定義的五個(gè)原始類(lèi)中的一個(gè),換句話說(shuō),undefined并不是程序報(bào)錯(cuò),而是程序允許的一個(gè)值。

not defined是javascript在運(yùn)行我們的javascript代碼時(shí),遇到?jīng)]有定義就用來(lái)運(yùn)算的變量時(shí)爆出來(lái)的錯(cuò)誤。

那么問(wèn)題來(lái)了:在許多的javascript教程中都介紹有javascript變量即使不定義也可以直接拿來(lái)使用,但是請(qǐng)注意,這個(gè)使用是指可以被賦值,但是不可以被運(yùn)算??匆粋€(gè)例子

var temp;
temp2 = 123;
alert(temp2);
temp3 = temp4+1;
alert(temp3);

在上面的代碼中,第一個(gè)alert可以正常彈窗為123;但是第二個(gè)alert是不會(huì)執(zhí)行的,因?yàn)槭褂昧藳](méi)有定義的temp4來(lái)運(yùn)算,這是不允許的。

接下來(lái)再看一個(gè)例子:

var temp;
alert(temp);
alert(typeof temp);
alert(typeof temp2);
alert(temp==undefined);
alert(temp2==undefined);

在這個(gè)示例中:

第一個(gè)、第二個(gè)和第三個(gè)alert可以彈出提示undefined;但其實(shí)這三個(gè)undefined的含義是不一樣的。在javascript中,undefined是一個(gè)類(lèi),這個(gè)類(lèi)只有一個(gè)值就是undefined,第一個(gè)alert彈出的就是值undefined,第二個(gè)和第三個(gè)彈出的是undefined這個(gè)類(lèi)名。

第四個(gè)alert會(huì)彈出true,這是一個(gè)判斷。

第五個(gè)alert不會(huì)彈出,因?yàn)閳?bào)錯(cuò)了。這里爆出的錯(cuò)誤就是因?yàn)槭褂昧藳](méi)有定義的變量進(jìn)行運(yùn)算。爆出的錯(cuò)誤是temp2 is not defined;(不同的瀏覽器可能說(shuō)法不同)

JavaScript中undefined和is not defined異常

不解釋,直接上代碼:

console.log(xx);
console.log(window.xx);

(其中xx是一個(gè)不存在的變量)

當(dāng)直接打印xx變量時(shí),直接拋出一個(gè)is not defined異常并終止執(zhí)行。

然而將xx變量以window.xx的形式打印出來(lái)時(shí),缺直接輸出一個(gè)undefined,并沒(méi)有出現(xiàn)異常,可以繼續(xù)執(zhí)行。

查閱相關(guān)文檔之后才知道,打印undefined說(shuō)明該變量已經(jīng)聲明,但沒(méi)有賦值;打印is not defined異常說(shuō)明該變量連聲明都沒(méi)有。通過(guò)這條結(jié)論說(shuō)明,window.xx的形式會(huì)在window對(duì)象中隱式的聲明該變量。

這也說(shuō)明了,為什么以下代碼可以直接運(yùn)行了。

window.xx = 2;
console.log(window.xx);

另外有個(gè)一個(gè)相關(guān)的問(wèn)題,見(jiàn)代碼:

function t1() {
    console.log(str2);  //undefined
    var str2 = 'mike';
}
t1();
和
function t1() {
    console.log(str2);  //is not defined
    str2 = 'mike';
}
t1();

第一種情況涉及到JavaScript的運(yùn)行階段,分為詞法分析階段和運(yùn)行階段,在詞法分析階段時(shí),先聲明了str2變量但沒(méi)有賦值,所以在運(yùn)行階段就出現(xiàn)了undefined。

第二種情況在詞法分析階段也無(wú)法聲明str2,因?yàn)闆](méi)有var關(guān)鍵字聲明,所以在運(yùn)行階段直接拋出異常。

還有一點(diǎn)需要注意的是,凡是沒(méi)有使用var聲明的變量,最終都會(huì)成為全局對(duì)象window的屬性,如下代碼:

function t1() {
    a = 10
    console.log(a);//10
    console.log(window.a);//10
}
t1();

總結(jié)

到此這篇關(guān)于JavaScript中undefined和is not defined區(qū)別與異常處理的文章就介紹到這了,更多相關(guān)js undefined和is not defined區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Js調(diào)用Java方法并互相傳參的簡(jiǎn)單實(shí)例

    Js調(diào)用Java方法并互相傳參的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇Js調(diào)用Java方法并互相傳參的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • Javascript基于OOP實(shí)實(shí)現(xiàn)探測(cè)器功能代碼實(shí)例

    Javascript基于OOP實(shí)實(shí)現(xiàn)探測(cè)器功能代碼實(shí)例

    這篇文章主要介紹了Javascript基于OOP實(shí)實(shí)現(xiàn)探測(cè)器功能代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • js 用于檢測(cè)類(lèi)數(shù)組對(duì)象的函數(shù)方法

    js 用于檢測(cè)類(lèi)數(shù)組對(duì)象的函數(shù)方法

    下面小編就為大家?guī)?lái)一篇js 用于檢測(cè)類(lèi)數(shù)組對(duì)象的函數(shù)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • JavaScript高級(jí)?ES7-ES13?新特性詳解

    JavaScript高級(jí)?ES7-ES13?新特性詳解

    這篇文章主要介紹了JavaScript高級(jí)?ES7-ES13?新特性詳解,本文結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • JavaScript中字符串分割函數(shù)split用法實(shí)例

    JavaScript中字符串分割函數(shù)split用法實(shí)例

    這篇文章主要介紹了JavaScript中字符串分割函數(shù)split用法,實(shí)例分析了javascript中split函數(shù)操作字符串的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • js實(shí)現(xiàn)上傳圖片預(yù)覽的方法

    js實(shí)現(xiàn)上傳圖片預(yù)覽的方法

    這篇文章主要介紹了js實(shí)現(xiàn)上傳圖片預(yù)覽的方法,通過(guò)自定義函數(shù)結(jié)合onchange方法實(shí)現(xiàn)上傳圖片的預(yù)覽功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 同時(shí)使用n個(gè)window onload加載實(shí)例介紹

    同時(shí)使用n個(gè)window onload加載實(shí)例介紹

    window onload加載多個(gè)同時(shí)使用,想必有很多人沒(méi)有用過(guò)吧,接下來(lái)為大家詳細(xì)介紹下具體的使用方法,感興趣的朋友可以參考下
    2013-04-04
  • 關(guān)于對(duì)TypeScript泛型參數(shù)的默認(rèn)值理解

    關(guān)于對(duì)TypeScript泛型參數(shù)的默認(rèn)值理解

    泛型可以理解為寬泛的類(lèi)型,通常用于類(lèi)和函數(shù),下面這篇文章主要給大家介紹了關(guān)于對(duì)TypeScript泛型參數(shù)默認(rèn)值的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 詳解JavaScript模塊化開(kāi)發(fā)

    詳解JavaScript模塊化開(kāi)發(fā)

    一個(gè)模塊就是實(shí)現(xiàn)特定功能的文件,有了模塊,我們就可以更方便地使用別人的代碼,想要什么功能,就加載什么模塊。模塊開(kāi)發(fā)需要遵循一定的規(guī)范,否則就都亂套了
    2016-12-12
  • JS實(shí)現(xiàn)DIV容器賦值的方法

    JS實(shí)現(xiàn)DIV容器賦值的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)DIV容器賦值的方法,可結(jié)合ajax使用,涉及JavaScript針對(duì)頁(yè)面元素的動(dòng)態(tài)操作技巧,需要的朋友可以參考下
    2015-12-12

最新評(píng)論