V8 JavaScript 引擎
V8 是 Google Chrome 使用的 JavaScript 引擎的名称。它负责解析和执行我们在使用 Chrome 浏览时编写的 JavaScript 代码。
V8 是 JavaScript 引擎,即它解析和执行 JavaScript 代码。DOM 和其他 Web 平台 API(它们共同构成运行时环境)由浏览器提供。
有趣的是,JavaScript 引擎独立于它所托管的浏览器。这个关键特性促成了 Node.js 的兴起。V8 在 2009 年被选为 Node.js 的引擎,随着 Node.js 的流行爆炸,V8 成为现在为大量用 JavaScript 编写的服务器端代码提供动力的引擎。
Node.js 生态系统非常庞大,这得益于 V8,它也为使用 Electron 等项目的桌面应用程序提供动力。
其他 JS 引擎
其他浏览器也有自己的 JavaScript 引擎
- Firefox 使用 SpiderMonkey
- Safari 使用 JavaScriptCore(也称为 Nitro)
- Edge 最初基于 Chakra,但最近已 使用 Chromium 和 V8 引擎重建。
还有许多其他引擎存在。
所有这些引擎都实现了ECMA ES-262 标准,也称为 ECMAScript,这是 JavaScript 使用的标准。
对性能的追求
V8是用C++编写的,并且不断改进。它可移植,可在 Mac、Windows、Linux 和其他几个系统上运行。
在本 V8 简介中,我们将忽略 V8 的实现细节:这些细节可以在更权威的网站(例如V8 官方网站)上找到,并且它们会随着时间推移而发生变化,通常是彻底的变化。
V8 始终在不断发展,就像其他 JavaScript 引擎一样,以加快 Web 和 Node.js 生态系统。
在网络上,多年来一直存在着对性能的竞争,而我们(作为用户和开发者)从这场竞争中获益良多,因为我们每年都获得了更快、更优化的机器。
编译
JavaScript 通常被认为是一种解释型语言,但现代 JavaScript 引擎不再仅仅解释 JavaScript,而是将其编译。
这种情况发生在 2009 年,当时 SpiderMonkey JavaScript 编译器被添加到 Firefox 3.5 中,并且每个人都遵循了这个想法。
JavaScript 在内部由 V8 使用即时 (JIT) 编译进行编译,以加快执行速度。
这可能看起来违反直觉,但自从 2004 年 Google 地图推出以来,JavaScript 已从一种通常执行几十行代码的语言发展成为一种在浏览器中运行数千到数十万行代码的完整应用程序的语言。
我们的应用程序现在可以在浏览器中运行数小时,而不仅仅是几个表单验证规则或简单的脚本。
在这个新世界中,编译 JavaScript 非常有意义,因为虽然让 JavaScript 准备好可能需要多一点时间,但一旦完成,它将比纯粹的解释型代码性能高得多。