JavaScript 如何执行代码
JavaScript是一种高级 即时 编译的编程语言,它一次性将整个机器码转换并立即执行。JavaScript代码由 JavaScript引擎 执行,这是一个独立的软件。不同的浏览器在浏览器中嵌入了各自的JS引擎实现,如谷歌浏览器的V8引擎,火狐浏览器的Spider Monkey,Safari浏览器的SquirrelFish等。让我们探索一下 谷歌的V8引擎 是如何工作的。

JavaScript代码首先进入解析器
- 解析器 – 它读取JavaScript代码并将其解析为称为AST(抽象语法树)的数据结构。 AST是通过将代码分解为标记并检查代码中的语义和句法错误来构建的。稍后将使用此树来生成机器代码。以下是AST的示例。 (注意 – 实际的AST看起来更复杂,这只是为了方便解释给你)。
-
编译/执行 – 如前所述,JavaScript是一种即时编译语言,同时使用解释器和编译器。首先,生成的AST进入解释器(Google称之为Ignition),该解释器提供机器代码。现在,使用调用堆栈执行此机器代码。在执行机器代码时,编译器(Google称之为Turbo Fan)尝试优化代码并返回将来运行的优化机器代码。代码的编译和执行过程是相互关联的。
- 优化 – JS引擎首先创建一个非常未优化的机器代码版本,以便尽快开始执行代码。但在后台,代码在正在运行的程序执行过程中进行了优化。
注意: 截止目前,Google的V8引擎是最快的Javascript引擎。
极客教程