執行上下文(棧) 作用域(鏈)

2021-10-04 21:07:23 字數 1014 閱讀 8504

執行上下文

首先按照**的位置分類可以分成兩種:全域性**以及函式(區域性)**。

全域性執行上下文

開始執行全域性**

函式執行上下文

開始執行函式體**

執行上下文棧

在全域性**執行前,js引擎會建立乙個棧來儲存管理所有的執行上下文物件

在全域性執行上下文(window確定後),將其新增到棧中(壓棧)

在函式執行上下文建立後,將其新增到棧中(壓棧)

在當前函式執行完後,將棧頂的物件移除(出棧)

當所有的**執行完後,棧中只剩下window

例題例題1

functiona(

);var a;

console.

log(

typeof a)

;//'function'

先執行變數提公升,再執行函式提公升

例題2

if(!

(b in window)

) console.

log(b)

//undefined

例題3

var c =

1function

c(c)c(

2)//報錯

原型鏈查詢物件屬性、作用域鏈查詢變數

作用域與執行上下文的區別

區別二

作用域和執行上下文

當全域性 開始執行前,先建立全域性執行上下文環境 2.當全域性執行上下文環境建立好了以後將上下文中的所有內容放入棧記憶體 3.最先放入的在最下邊 global 4.其他執行的函式的執行上下文依次放入 放入的順序是 的執行順序 5.棧中最後放入的執行完最先出棧。6.1.除全域性作用域之外,每個函式都會...

執行上下文和作用域

執行上下文 1.分類 位置 全域性 函式 區域性 2.全域性執行上下文 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 thi...

作用域與執行上下文

1.區別1 全域性作用域之外,每個函式都會建立自己的作用域,作用域在函式定義時就已經確定了,而不是在函式呼叫時 全域性執行上下文環境是在全域性作用域確定之後,js 馬上執行之前建立 函式執行上下文環境是在呼叫函式時,函式體 執行之前建立 2.區別2 作用域是靜態的,只要函式定義好了就一直存在,且不會...