javascript作用域示例詳解_javascript技巧

javascript作用域示例詳解_javascript技巧

ID:30775958

大?。?0.05 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2019-01-03

javascript作用域示例詳解_javascript技巧_第1頁(yè)
javascript作用域示例詳解_javascript技巧_第2頁(yè)
javascript作用域示例詳解_javascript技巧_第3頁(yè)
javascript作用域示例詳解_javascript技巧_第4頁(yè)
資源描述:

《javascript作用域示例詳解_javascript技巧》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、JavaScript作用域示例詳解作用域是JavaScript最重要的概念Z_,想要學(xué)好JavaScript就需要理解JavaScript作用域和作用域鏈的工作原理。今天這篇文章對(duì)JavaScript作用域示例詳解的介紹,希望能幫助大家更好的學(xué)習(xí)JavaScript。任何程序設(shè)計(jì)語(yǔ)言都有作用域的概念,簡(jiǎn)單的說(shuō),作用域就是變量與函數(shù)的可訪問(wèn)范圍,即作用域控制著變量與函數(shù)的可見(jiàn)性和生命周期。在JavaScript屮,變量的作用域有全局作用域和局部作用域兩種。一、JavaScript中無(wú)塊級(jí)作用域在Java或C#中存在塊級(jí)作用域,即:大括號(hào)也是一個(gè)作用域。publicstaticvoidm

2、ain(){if仃二二1){Stringname二〃seven〃;}System?out?println(name);}//報(bào)錯(cuò)publicstaticvoidMain(){if(l==l){?〃〃stringname=seven;}Console.WriteLine(name);}//報(bào)錯(cuò)在JavaScript語(yǔ)言中無(wú)塊級(jí)作用域functionMain(){if(1=1){varname='seven';}console?log(name);}//輸出:seven二、JavaScript釆用函數(shù)作用域在JavaScript屮每個(gè)函數(shù)作為一個(gè)作用域,在外部無(wú)法訪問(wèn)內(nèi)部作用威屮的變量。

3、fundionMain(){varinnerValue='seven';}MainO;console.log(innerValue);//扌艮錯(cuò):UncaughtReferenceError:innerValueisnotdefined三、JavaScript的作用域鏈由于JavaScript中的每個(gè)函數(shù)作為一個(gè)作用域,如果出現(xiàn)函數(shù)歐套函數(shù),則就會(huì)岀現(xiàn)作用威鏈。xo二'alex,;functionFunc(){varxo="seven";functioninner(){varxo二'alvin,;console?1og(xo);}inner();}Func();如上述代碼則出現(xiàn)三個(gè)作

4、用域組成的作用域鏈,如果出現(xiàn)作用域鏈后,那么尋找變量時(shí)候就會(huì)出現(xiàn)順序,對(duì)于上述實(shí)例:當(dāng)執(zhí)行console,log(xo)時(shí),其尋找順序?yàn)楦鶕?jù)作用域鏈從內(nèi)到外的優(yōu)先級(jí)尋找,如果內(nèi)層沒(méi)冇就逐步向上找,直到?jīng)]找到拋出異常。四、JavaScript的作用域鏈執(zhí)行前已創(chuàng)建JavaScript的作用域在被執(zhí)行之前已經(jīng)創(chuàng)建,日后再去執(zhí)行吋只需要按照作用域鏈去尋找即可。示例一:xo二'alex,;functionFunc(){varxo=sevenfunctioninner(){console,log(xo);returninner;}varret=Func();ret();//輸出結(jié)果:seven

5、上述代碼,在函數(shù)被調(diào)用之前作用域鏈已經(jīng)存在:?全局作用域->Func函數(shù)作用域->inner函數(shù)作用域當(dāng)執(zhí)行【mt();】時(shí),由于其代指的是inner函數(shù),此函數(shù)的作用域鏈在執(zhí)行Z前已經(jīng)被定義為:全局作用域->Func函數(shù)作用域->inner函數(shù)作用域,所以,在執(zhí)行【ret();】時(shí),會(huì)根據(jù)已經(jīng)存在的作用域鏈去尋找變量。示例二:xo='alcx';functionFunc(){〃?〃varxo=eirc;functioninner(){console,log(xo);}xo='seven';returninner;}varret二Func();ret();//輸出結(jié)果:seven上述

6、代碼和示例一的目的相同,也是強(qiáng)調(diào)在函數(shù)被調(diào)用之前作用域鏈已經(jīng)存在:?全局作用域-〉Func函數(shù)作用域-〉inner函數(shù)作用域不同的時(shí),在執(zhí)行【varret二FuncO;]時(shí),F(xiàn)unc作用域中的xo變量的值已經(jīng)由“sic”被重置為“seven”,所以Z后再執(zhí)行【ret0;】時(shí),就只能找到“seven”。不例三:xo='alex';
functionBar(){console,log(xo);}functionFunc(){〃〃varxo二seven;returnBar;}varret=Func();ret();//輸出結(jié)果:alex上述代碼,在函數(shù)被執(zhí)行Z前已經(jīng)創(chuàng)建了兩條作用域鏈

7、:?全局作用域-〉Bar函數(shù)作用域?全局作用域->Func函數(shù)作用域當(dāng)執(zhí)行【ret();】時(shí),rel代指的Bar函數(shù),而B(niǎo)ar函數(shù)的作用域鏈已經(jīng)存在:全局作用域->Bar函數(shù)作用域,所以,執(zhí)行時(shí)會(huì)根據(jù)已經(jīng)存在的作用域鏈去尋找。五、聲明提前在JavaScript中如果不創(chuàng)建變量,直接去使用,則報(bào)錯(cuò):console,log(xxoo);//扌良錯(cuò):UncaughtReferenccError:xxooisnotdefinedJavaScript中如果創(chuàng)建值而不

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。