正在阅读有关javascript执行上下文的一些信息。我正在阅读以下article的Rupesh Mishra。
文章指出,每次新的函数调用都会创建一个新的执行上下文。执行上下文确实具有2阶段创建阶段和执行阶段,其中代码逐行执行。
有人说过,在创建阶段,JS引擎会做三件事:
this
这是激活对象的解释:
创建Activation对象或变量对象:激活对象是JS中的一个特殊对象,它包含所有变量,函数参数和内部函数声明信息。由于激活对象是一个特殊对象,因此它没有dunder proto属性。
ES5
+是否仍然具有此激活对象结构?如果不是,执行上下文的创建阶段的当前步骤是什么?
答案 0 :(得分:4)
不,ES5(及更高版本)不再使用标准JS对象来存储变量。它使用lexical environments(带this
值和范围链),其中包含各种类型的environment records,其中存储了变量的值。
执行上下文的创建阶段的当前步骤是什么?
Section 10.4 Establishing an Execution Context谈到这一点。
行为与ES3没有太大的区别(在所有旧代码仍然有效之后),它只是使用新术语进行描述。