javascript作用域示例詳解_javascript技巧

javascript作用域示例詳解_javascript技巧

ID:30775958

大小:50.05 KB

頁數(shù):4頁

時間:2019-01-03

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

《javascript作用域示例詳解_javascript技巧》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。

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

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

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

4、用域組成的作用域鏈,如果出現(xiàn)作用域鏈后,那么尋找變量時候就會出現(xiàn)順序,對于上述實例:當執(zhí)行console,log(xo)時,其尋找順序為根據(jù)作用域鏈從內到外的優(yōu)先級尋找,如果內層沒冇就逐步向上找,直到?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();//輸出結果:seven

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

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

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

當前文檔最多預覽五頁,下載文檔查看全文

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

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