如何执行JavaScript代码
JavaScript是一种高级、 即时编译 的编程语言,它一次性将整个机器代码转换并立即执行。JavaScript代码由 JavaScript引擎 执行,该引擎是单独的软件。不同的浏览器在浏览器中嵌入了各自实现的JS引擎,如Google Chrome的V8引擎,Mozilla Firefox的Spider Monkey,Safari的SquirrelFish等等。让我们来探讨一下 Google的V8引擎 是如何工作的。
JavaScript代码首先进入解析器
- 解析器 – 它读取JavaScript代码并将其解析为称为AST(抽象语法树)的数据结构。AST通过将代码分解为标记并检查代码中的语义和句法错误来构建。稍后将使用该树生成机器代码。下面是AST的示例,看起来像是什么样子的(注意 – 实际的AST更复杂,这只是为了更容易让您理解)。
- 编译/执行 – 如前所述,JavaScript是一种使用解释器和编译器的即时编译语言。首先,生成的AST进入解释器(Google称其为 Ignition ),该解释器提供机器代码。现在使用调用栈执行此机器代码。在执行机器代码时,编译器(Google称其为 Turbo Fan )试图优化代码并返回将在以后运行的优化机器代码。编译和执行代码的过程是同时进行的。
- 优化 – JS引擎首先创建一种非常不经过优化的机器代码版本,以便尽快启动代码执行。但在后台,代码在已经运行的程序执行期间会进行优化。
注意:目前,Google的V8引擎是最快的JavaScript引擎。
阅读更多:JavaScript 教程