细说JS系列(四)

73 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

铃铛说点题外话

上一篇里面仔细的说了解析过程阻塞的情况及原因。那么这一篇我们就看看浏览器是怎么解析JS代码的吧

铃铛说正文

我们先要知道一个前提:JS代码是由谁来完成解析的:JS引擎

那我们就来说说Js引擎,我们为什么需要JS引擎呢?

  • 高级编程语言都需要转换称最终的机器语言指令来执行。
  • 事实上,我们编写的JavaScript无论是交给浏览器或者Node执行,最终都是需要被CPU执行的。
  • 但是CPU只认识自己的指令集,实际上就是机器语言才能被CPU所执行。
  • 所以需要JavaScript引擎帮助我们将JavaScript代码翻译称CPU指令来执行。

之前介绍浏览器的时候我们说不同的浏览器有不同的内核,那么不同的浏览器也有不同的JS引擎,我们就看看有哪些常见的JS引擎

JS引擎
SpiderMonkey第一款JavaScript引擎 ,由Brendan Eich开发(也就是JavaScript作者)
Chakra微软开发,用于IT浏览器;
JavaScriptCoreWebKit中的JavaScript引擎, Apple公司开发
V8Google开发的强大JavaScript引擎,也帮助Chrome从众多浏览器中脱颖而出

看到这有人会问了,JS引擎和浏览器内核有什么关联吗?当然有

  • 这里我们先以WebKit为例, WebKit事实上由两部分组成的:
    • WebCore:负责HTML解析、布局、渲染等等相关的工作;
    • JavaScriptCore :解析、执行JavaScript代码 ;

知识面稍微广一点的同学,可能一眼就看见一个非常眼熟的JS引擎:V8。 那么V8引擎是什么呢?

  • V8 是用 C++ 编写的 Google 开源高性能 JavaScrip 和 WebAssembly 引l擎,它用于 Chrome 和 Node.js 等。
  • 它实现 ECMAScript 和 WebAssembly ,并在 Windows 7 或更高版本, macOS 10.12+ 和使用 x64 , IA-32 ,ARM或 MIPS 处理器的 Linux 系统上运行。
  • V8 可以独立运行,也可以嵌入到任何 C++ 应用程序中。

跟铃铛说再见

这里我们大概了解了一下浏览器是通过JS引擎解析我们的JS代码,浏览器的内核和JS引擎的分工,下一篇我们详细介绍我们常见的V8引擎是怎么具体解析我们代码的。