js高階-函式的作用域/執行上下文
阿新 • • 發佈:2021-12-31
1.變數提升的引入
那麼到底是什麼機制產生了變數提升,為什麼需要變數提升hoist呢?
2.執行上下文
(1)全域性執行上下文
- 在執行全域性程式碼前,將window確定為全域性執行上下文==>也就是全域性物件
- 對全域性資料進行預處理
- var 定義的全域性變數 == > undefined,新增到window物件上作為其屬性
- function宣告的全域性函式 == > 直接賦值,新增為window的方法
- this == > 直接賦值為window ,可以通過它呼叫window上的屬性和方法
- 執行全域性程式碼
(2)區域性執行上下文(函式執行上下文)
- 在呼叫函式時,準備執行函式體之前==>建立一個對應的函式執行上下文物件
- 對區域性引數進行預處理
- 形參變數 ==> 賦值(接收的實參) == >新增為執行上下文的屬性
- arguments ==> 賦值(接收的實參列表) == >新增為執行上下文屬性
- 在函式內部var定義的區域性變數 == > undefined ==> 變數提升 ==>新增為執行上下文屬性
- 在函式內部宣告的函式 ==> 賦值(fun),新增為執行上下文方法
- this ==> 賦值(呼叫函式的物件)
- 開始執行函式體程式碼