JavaScript 在执行块时会创建新的执行上下文吗?

far*_*oft 6 javascript v8 ecmascript-5 ecmascript-6

JavaScript 在执行块时是否创建新的执行上下文以将其词法环境与其关联。

Ber*_*rgi 10

。执行上下文本质上是一个调用堆栈帧,而词法环境是当前范围。评估块时不会调用任何函数。

\n\n

您可以在块的求值语义规范中读到,它创建一个新的词法环境(使用块作用域中的变量初始化),该环境将旧环境作为其父环境,并且“ Set[s] 正在运行的执行上下文\xe2 \x80\x99sLexicalEnvironment到 [该值] ”。执行完块中的语句后,子环境再次弹出,但运行的执行上下文始终保持不变。

\n

  • 它将被设置回进入块语句之前执行上下文的词法环境。这不一定是“函数”之一,它是块所在的任何范围。 (2认同)