Javascript 执行上下文是否总是有两个阶段(创建和执行)?

Did Javascript execution context always have two phases (creation and execution)?

在 JavaScript 了解奇怪的部分中,参考两个阶段解释了特定执行上下文的起源:

  1. 创建阶段 - 声明优先并使用未定义的值进行初始化
  2. 执行阶段 - 解决分配

this answer的一个相关问题中,作者提到解释器对源代码进行了两次传递。

这一直是 JS 的一个特性,还是与充当 JIT 编译器的现代 JS 引擎有关的最近现象?

一般来说,一切都必须先创建才能使用。

是的,这是 JavaScript 自 first standard edition 以来的行为。

但是不,现代引擎不再是“对源代码进行两次传递”的解释器,它们使用的解析器在单个文件中提取声明和可执行命令通过.