JavaScript 引擎快速概览
学习 JavaScript 不需要了解 JavaScript 引擎的工作原理,但了解其底层工作原理总是有益的。
请记住,每段 JavaScript 代码的解释方式都会因浏览器引擎的不同而有所差异。
JavaScript 解析:这意味着您的浏览器会读取您的 JavaScript 代码。
JavaScript 执行:这是我们的代码实际执行某些操作的过程。
当代码被解析和执行时,浏览器才会使用 JavaScript 引擎。
Google Chrome 的引擎叫做 v8,而 Firebox 的引擎叫做 SpiderMonkey。
有关
Google V8
Firebox SpiderMonkey 的更多信息,请参阅
发动机通常由两部分组成:
-解释器
-编译器(通常是即时编译器,简称JIT)
注意:在本文中,我们将重点介绍引擎的一般工作原理,而不是引擎在代码执行时所做的事情。
译者
在这里,我们的引擎会解析/加载脚本(JavaScript 代码),读取它,然后将其转换为字节码,最后开始执行。生成的字节码将交给编译器。
编译器
它会将你的脚本编译成机器代码。所以,将 JavaScript 代码翻译成机器代码就是我们编译器所做的工作。
请记住:即时编译意味着我们的编译器会立即开始编译并执行已编译的代码。
JavaScript 引擎会进行优化
如果你编写了一个脚本,然后修改了其中的一部分,JavaScript 引擎会检查上次执行和当前运行之间哪些代码没有发生变化。当前版本并非总是需要重新编译。引擎会检查哪些代码已经编译过,并避免重复编译,从而加快引擎的处理速度。
浏览器 API
我们的浏览器自带一些默认函数或对象,它们可以与我们的 JavaScript 代码配合使用。当我们使用这些浏览器 API 中的函数或对象时,引擎会解释并编译我们的代码,然后浏览器就能知道这些函数或对象来自哪里。
文章来源:https://dev.to/devpato/quick-overview-to-javascript-engines-1o23
