执行上下文

发布: (2026年4月6日 GMT+8 08:30)
2 分钟阅读
原文: Dev.to

Source: Dev.to

把 Execution Context 想象成一个厨房。
在你开始烹饪(执行代码)之前,需要工作空间、工具(变量)和配方(函数)。所以,这里的 Execution Context 就是准备阶段或 “set‑up”。

Global Execution Context (GEC)

  • 这是默认的盒子。
  • 如果你的代码不在函数内部,它就位于这里。
  • GEC 会自动创建两样东西:window 对象(在浏览器中)和特殊关键字 this

Functional Execution Context (FEC)

  • 每次调用函数时,JavaScript 会为该函数创建一个全新的小盒子。
  • 该盒子中保存着函数专属的变量和逻辑。

The Two Phases (The “Magic” Trick)

JavaScript 并不是简单地从上到下逐行读取代码并立即执行。它会在你的 “盒子” 中瞬间进行两次遍历。

Fase A: Penciptaan (Alokasi Memori)

  • 创建全局对象(window)。
  • 为变量和函数分配内存空间。
  • Hoisting:变量声明被设为 undefined,所有函数声明被存入内存。

Fase B: Eksekusi

  • 由于 JavaScript 是单线程的(一次只能做一件事),它使用 Call Stack 来追踪当前正在处理的 “盒子”。
  • 想象一堆 Pringles 薯片:
    • Global Context 是最底层的那片。
    • 当你调用 functionA() 时,会在其上放置一片新的薯片(Context A)。
    • 如果 functionA 调用 functionBContext B 会放在 Context A 之上。
    • functionB 执行完毕,它会从堆栈中 “弹出”(popped),控制权返回到 Context A
0 浏览
Back to Blog

相关文章

阅读更多 »