如何执行 JavaScript 代码?
Javascript 是一种高级的、及时的 编译的编程语言,它一次转换整个机器代码,然后立即执行。 Javascript 代码由独立软件Javascript Engine执行。不同的浏览器都有自己的嵌入在浏览器中的 JS 引擎实现,例如 Google Chrome 的 V8 引擎、Mozilla Firefox 的 Spider Monkey、Safari 的 SquirrelFish 等等。让我们探索一下Google 的 V8 引擎是如何工作的。
JavaScript 代码首先进入解析器
- 解析器——它读取 JavaScript 代码并将其解析为称为 AST(抽象语法树)的数据结构。 AST 是通过将代码分解为标记并检查代码中的语义和句法错误来构建的。该树稍后用于生成机器代码。以下是 AST 外观的示例。 (注意——实际的 AST 看起来更复杂,这只是为了方便地向您解释)。
- 编译/执行——如前所述,Javascript 是一种即时编译语言,它同时使用解释器和编译器。首先,生成的 AST 进入提供机器代码的解释器(谷歌称之为Ignition )。该机器代码现在在调用堆栈的帮助下执行。当机器代码正在执行时,编译器(Google 称之为Turbo Fan )会尝试优化代码并返回稍后运行的优化机器代码。代码的编译和执行过程齐头并进。
- 优化 - JS 引擎首先创建一个非常未优化的机器代码版本,以便可以尽快开始执行代码。但在后台,代码在已经运行的程序执行期间被优化。
注意:到目前为止,Google 的 V8 引擎是最快的 Javascript 引擎。