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

标签 javascript compiler-construction interpreter execution hoisting

在 JavaScript Understanding the Weird Parts 中,引用两个阶段解释了特定执行上下文的起源:

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

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

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

最佳答案

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

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

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

关于javascript - Javascript执行上下文总是有两个阶段(创建和执行)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748168/

相关文章:

java - Java 中的拼接语言解释器

javascript - 如何在 JavaScript 中对两个对象数组执行内部连接?

javascript - 显示任意数字输入的数据

compiler-construction - 如何在 LLVM 中声明全局变量?

c - 修复给定代码中的冲突? "25 shift/reduce conflicts [-Wconflicts-sr] "

compiler-construction - 使用哈希表在类中存储方法有什么优点?

c++ - CPython 是字节码解释器吗?

javascript - 元素旋转不流畅

javascript - testcafe支持图片粘贴吗?

parsing - 有关将语法树转换为程序集的资源?