什么是执行上下文?执行上下文有哪些阶段?
请解释执行上下文的概念,并说明创建和执行两个阶段各自做了哪些工作。
回答
苦行僧
执行上下文(Execution Context):JavaScript 代码执行时的环境抽象,包含变量、函数声明、作用域链和 this 等信息。
类型:全局执行上下文、函数执行上下文、eval 执行上下文。
创建阶段(Creation Phase):
- 创建 词法环境(Lexical Environment):
- 创建 Environment Record(存储变量和函数声明)
- 建立
outer引用(指向外层词法环境) this绑定(根据环境类型确定)
- 创建 变量环境(Variable Environment):
- 处理
var声明(初始化为undefined,即变量提升) - 处理函数声明(提升且赋值完成)
let/const声明已注册但处于 TDZ(暂时性死区)中
- 处理
执行阶段(Execution Phase):
- 逐行执行代码
- 为变量赋值
- 执行函数调用(创建新的执行上下文压入执行栈)
- 执行完毕后出栈,被 GC 回收