持续创作,加速成长!这是我参与「掘金日新计划 · 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浏览器; |
| JavaScriptCore | WebKit中的JavaScript引擎, Apple公司开发 |
| V8 | Google开发的强大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引擎是怎么具体解析我们代码的。