JavaScript作用域示例詳解__第1頁
JavaScript作用域示例詳解__第2頁
JavaScript作用域示例詳解__第3頁
JavaScript作用域示例詳解__第4頁
JavaScript作用域示例詳解__第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、JavaScript作用域示例詳解_ 作用域是JavaScript最重要的概念之一,想要學(xué)好JavaScript就需要理解JavaScript作用域和作用域鏈的工作原理。今日這篇文章對(duì)JavaScript作用域示例詳解的介紹,盼望能關(guān)心大家更好的學(xué)習(xí)JavaScript。 任何程序設(shè)計(jì)語言都有作用域的概念,簡潔的說,作用域就是變量與函數(shù)的可訪問范圍,即作用域掌握著變量與函數(shù)的可見性和生命周期。在JavaScript中,變量的作用域有全局作用域和局部作用域兩種。 一、JavaScript中無塊級(jí)作用域 在Java或C#中存在塊級(jí)作用域,即:大括號(hào)也是一個(gè)作用域。 public static vo

2、id main () if(1=1) String name = seven; System.out.println(name); / 報(bào)錯(cuò) public static void Main() if(1=1) string name = seven; Console.WriteLine(name); / 報(bào)錯(cuò) 在JavaScript語言中無塊級(jí)作用域 function Main() if(1=1) var name = seven; console.log(name); / 輸出: seven 二、JavaScript采納函數(shù)作用域 在JavaScript中每個(gè)函數(shù)作為一個(gè)作用域,在外部無法訪

3、問內(nèi)部作用域中的變量。 function Main() var innerValue = seven; Main(); console.log(innerValue); / 報(bào)錯(cuò):Uncaught ReferenceError: innerValue is not defined 三、JavaScript的作用域鏈 由于JavaScript中的每個(gè)函數(shù)作為一個(gè)作用域,假如消失函數(shù)嵌套函數(shù),則就會(huì)消失作用域鏈。 xo = alex; function Func() var xo = seven; function inner() var xo = alvin; console.log(xo);

4、inner(); Func(); 如上述代碼則消失三個(gè)作用域組成的作用域鏈,假如消失作用域鏈后,那么查找變量時(shí)候就會(huì)消失挨次,對(duì)于上述實(shí)例: 當(dāng)執(zhí)行console.log(xo)時(shí),其查找挨次為依據(jù)作用域鏈從內(nèi)到外的優(yōu)先級(jí)查找,假如內(nèi)層沒有就逐步向上找,直到?jīng)]找到拋出特別。 四、JavaScript的作用域鏈執(zhí)行前已創(chuàng)建 JavaScript的作用域在被執(zhí)行之前已經(jīng)創(chuàng)建,日后再去執(zhí)行時(shí)只需要根據(jù)作用域鏈去查找即可。 示例一: xo = alex; function Func() var xo = seven; function inner() console.log(xo); return i

5、nner; var ret = Func(); ret(); / 輸出結(jié)果: seven 上述代碼,在函數(shù)被調(diào)用之前作用域鏈已經(jīng)存在: 全局作用域 - Func函數(shù)作用域 - inner函數(shù)作用域 當(dāng)執(zhí)行【ret();】時(shí),由于其代指的是inner函數(shù),此函數(shù)的作用域鏈在執(zhí)行之前已經(jīng)被定義為:全局作用域 - Func函數(shù)作用域 - inner函數(shù)作用域,所以,在執(zhí)行【ret();】時(shí),會(huì)依據(jù)已經(jīng)存在的作用域鏈去查找變量。 示例二: xo = alex; function Func() var xo = eirc; function inner() console.log(xo); xo = s

6、even; return inner; var ret = Func(); ret(); / 輸出結(jié)果: seven 上述代碼和示例一的目的相同,也是強(qiáng)調(diào)在函數(shù)被調(diào)用之前作用域鏈已經(jīng)存在: 全局作用域 - Func函數(shù)作用域 - inner函數(shù)作用域 不同的時(shí),在執(zhí)行【var ret = Func();】時(shí),F(xiàn)unc作用域中的xo變量的值已經(jīng)由 “eric” 被重置為 “seven”,所以之后再執(zhí)行【ret();】時(shí),就只能找到“seven”。 示例三: xo = alex;br function Bar() console.log(xo); function Func() var xo =

7、seven; return Bar; var ret = Func(); ret(); / 輸出結(jié)果: alex 上述代碼,在函數(shù)被執(zhí)行之前已經(jīng)創(chuàng)建了兩條作用域鏈: 全局作用域 - Bar函數(shù)作用域 全局作用域 - Func函數(shù)作用域 當(dāng)執(zhí)行【ret();】時(shí),ret代指的Bar函數(shù),而Bar函數(shù)的作用域鏈已經(jīng)存在:全局作用域 - Bar函數(shù)作用域,所以,執(zhí)行時(shí)會(huì)依據(jù)已經(jīng)存在的作用域鏈去查找。 五、聲明提前 在JavaScript中假如不創(chuàng)建變量,挺直去用法,則報(bào)錯(cuò): console.log(xxoo); / 報(bào)錯(cuò):Uncaught ReferenceError: xxoo is not defined JavaScript中假如創(chuàng)建值而不賦值,則該值為 undefined,如: var xxoo; console.log(xxoo); / 輸出:undefined 在函數(shù)內(nèi)假如這么寫: function Foo() console.log(xo); var xo = seven; Foo(); / 輸出:undefined 上述代碼,不報(bào)錯(cuò)而是輸出 undefined,其緣由是:JavaScript的函數(shù)在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論