首頁 web前端 js教程 JavaScript作用域鏈其一:作用域鏈定義

JavaScript作用域鏈其一:作用域鏈定義

Dec 20, 2016 pm 04:16 PM
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

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

簡易JavaScript教學:取得HTTP狀態碼的方法

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript與WebSocket:打造高效率的即時天氣預報系統

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

如何在JavaScript中取得HTTP狀態碼的簡單方法

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

javascript如何使用insertBefore

See all articles