iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

轉職仔與JavaScript的初次相遇系列 第 13

JavaScript引擎的Call Stack和Memory Heap - Day13

  • 分享至 

  • xImage
  •  

前言

昨天我們說明程式碼是如何轉成機器碼,今天我們將講解程式碼『在哪運行』。

說明

JavaScript引擎有兩個主要部分,分別是Call Stack和Memory Heap
https://ithelp.ithome.com.tw/upload/images/20230918/20162465LJ9Uty5hhU.png

Call Stack:

Call Stack是引擎中使用Execution context(執行上下文)執行程式碼的地方,存在目的為追蹤目前程式碼跑到哪裡

Call Stack的特色有

  1. Last-In-First-Out(後進先出),也就是說最晚放入的資料會最先被取出
  2. 最底層一定會有一個Global Execution Context,提供其他函式存取 global object 以及this關鍵字
  3. 由於JavaScript為單線程語言(Single thread),在Call Stack中一次只能新增或移除一個Execution Context

註: 單線程語言意旨一次只能處理一段程式碼

https://ithelp.ithome.com.tw/upload/images/20230918/20162465cveLO0D8h3.png

Memory Heap:

Memory Heap是儲存所有程式碼所需Object的地方
這樣我們就有了分配內存、使用內存和釋放內存的地方。

https://ithelp.ithome.com.tw/upload/images/20230918/201624657WZxr403QB.png

明天我們將介紹Execution context(執行上下文)!


上一篇
JavaScript程式碼的轉譯和編譯 - Day12
下一篇
JavaScript的Execution context(執行上下文)- Day14
系列文
轉職仔與JavaScript的初次相遇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言