iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
自我挑戰組

30天JavaScript自學挑戰系列 第 27

Day 27 Execution Context (EC)

  • 分享至 

  • xImage
  •  

我們知道程式碼執行的位置是在call stack當中,但JavaScript程式碼是如何執行的?

在討論JavaScript程式碼的執行前,要先談談execution context(EC),EC是一個抽象的概念,call stack就是由EC組合而成,在任何的JavaScript project中,無論這個project有多大,都只有一個global EC,也就是top-level code執行的地方,top-level code指的是在函數外的程式碼。

EC是由什麼組成的?
當函數被呼叫後,會產生EC,EC包含了函數運作所需的全部資料:

  1. 變數環境(variable environment):這裡儲存了所有函數內部宣告的變數及函數,另外還有一個引數物件(arguments object),如它的名稱所示,這是一個包含了許多引數的物件,傳入該EC所屬的函數的引數都會儲存在這個物件中。
  2. scope chain:基本上是由函數所引用的外部變數所組成,這也是為什麼函數可以訪問外部變數的原因。
  3. this關鍵字。

上述資料都是在程式碼執行前的所謂創建階段(creation phase)生成的。
值得注意的是,arrow function的EC裡面並沒有引數物件也沒有this關鍵字,但它可以使用離它最近的父級正則函數(regular function parent)所擁有的引數物件及this關鍵字。


上一篇
Day 26 JavaScript引擎
下一篇
Day 28 Call Stack
系列文
30天JavaScript自學挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言