JavaScript作用域鏈其一:作用域鏈定義
javascript
一個執行上下文 的資料(變數、函數宣告和函數的形參)作為屬性儲存在變數物件中。變數物件在每次進入上下文時創建,並填入初始值,值的更新出現在程式碼執行階段。
這一章專門討論與執行上下文直接相關的更多細節,這次我們將提及一個議題-作用域鏈。
如果要簡要的描述並展示其重點,那麼作用域鏈大多數與內部函數相關。
我們知道,ECMAScript 允許建立內部函數,我們甚至可以從父函數傳回這些函數。
var x = 10; function foo() { var y = 20; function bar() { alert(x + y); } return bar; } foo()(); // 30
登入後複製
這樣,很明顯每個上下文都有自己的變數物件:對於全域上下文,它是全域物件本身;對於函數,它是活動物件。
作用域鏈正是內部上下文所有變數物件(包括父變數物件)的列表。此鏈用來變數查詢。即在上面的例子中,「bar」上下文的作用域鏈包括AO(bar)、AO(foo)和VO(global)。
但是,讓我們仔細研究這個問題。
讓我們從定義開始,並進深一步的討論範例。
作用域鏈與一個執行上下文相關,變數物件的鏈用於在標識符解析中變數查找。
函數上下文的作用域鏈在函數呼叫時所建立的,包含活動物件和這個函數內部的[[scope]]屬性。下面我們將更詳細的討論一個函數的[[scope]]屬性。
在上下文中示意如下:
activeExecutionContext = { VO: {...}, // or AO this: thisValue, Scope: [ // Scope chain // 所有变量对象的列表 // for identifiers lookup ] };
登入後複製
其scope定義如下:
Scope = AO + [[Scope]]
登入後複製
這種聯合和標識符解析過程,我們將在下面討論,這與函數的生命週期相關。
以上就是JavaScript作用域鏈其一:作用域鏈定義作用域鏈其一:作用域鏈定義的內容,更多相關內容請關注PHP中文網(www.php.cn)!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)