【问题标题】:Does JavaScript create a new execution context when executing a block?JavaScript 在执行块时会创建新的执行上下文吗?
【发布时间】:2017-10-01 18:01:05
【问题描述】:

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

【问题讨论】:

标签: javascript ecmascript-6 v8 ecmascript-5


【解决方案1】:

。一个execution context is essentially a call stack frame,而词法环境是当前作用域。评估块时不会调用任何函数。

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

【讨论】:

  • 块执行完毕后,LexicalEnvironment会再次设置为功能块的词法环境对吗?
  • 在进入块语句之前会被设置回执行上下文的词法环境。这不一定是function 之一,它是块所在的任何范围。
  • 真正有用的答案。谢谢
最近更新 更多