CodeWalk

什么是执行上下文?执行上下文有哪些阶段?

作者:苦行僧 · 2026-05-30 12:55

请解释执行上下文的概念,并说明创建和执行两个阶段各自做了哪些工作。

回答

苦行僧

执行上下文(Execution Context):JavaScript 代码执行时的环境抽象,包含变量、函数声明、作用域链和 this 等信息。

类型:全局执行上下文、函数执行上下文、eval 执行上下文。

创建阶段(Creation Phase)

  1. 创建 词法环境(Lexical Environment)
    • 创建 Environment Record(存储变量和函数声明)
    • 建立 outer 引用(指向外层词法环境)
    • this 绑定(根据环境类型确定)
  2. 创建 变量环境(Variable Environment)
    • 处理 var 声明(初始化为 undefined,即变量提升)
    • 处理函数声明(提升且赋值完成)
    • let/const 声明已注册但处于 TDZ(暂时性死区)中

执行阶段(Execution Phase)

  1. 逐行执行代码
  2. 为变量赋值
  3. 执行函数调用(创建新的执行上下文压入执行栈)
  4. 执行完毕后出栈,被 GC 回收