对 V8 到底是什么感到困惑

Confused about what V8 actually is

我知道 V8 是一个 JavaScript 引擎,但它也是一个运行时环境吗?我知道运行时环境为引擎提供事件循环、API、回调队列等,但从我读过的内容来看,V8 似乎也提供它们?是引擎 > 运行环境还是相反?

没有。 V8 编译并执行 JavaScript 源代码,处理对象的内存分配,并垃圾收集它不再需要的对象。 V8 的停止世界、分代、准确的垃圾收集器是 V8 性能的关键之一。

JavaScript 通常用于浏览器中的客户端脚本,例如用于操作文档对象模型 (DOM) 对象。然而,DOM 通常不是由 JavaScript 引擎提供,而是由浏览器提供。 V8 也是如此——Google Chrome 提供了 DOM。然而,V8 确实提供了 ECMA 标准中指定的所有数据类型、运算符、对象和函数。

V8 使任何 C++ 应用程序都可以将自己的对象和函数公开给 JavaScript 代码。您可以决定要公开给 JavaScript.

的对象和函数

V8 是一个提供运行时环境的JavaScript引擎。

JavaScript 运行时环境,由 V8 或任何其他 JavaScript 引擎提供,由内存堆和调用堆栈组成,实际的 JS 代码在这里被编译和执行。

事件循环、Web API 和回调队列不是由 V8 provided/supplied 提供的,而是由 V8 托管环境提供的。V8 的托管环境可以是浏览器(如 Google Chrome) 或 Node.js.

你看这个image,边框线内的左边是V8提供的JS runtine环境。在右侧,您可以看到浏览器(托管环境)提供的 Web API、Callback Queue 和 Event Loop。希望它澄清。

图片来源:sessionstack blogpost

有关详细信息和说明,您可以 read about the V8 JS Engine. Plus, this video tutorial 非常有帮助并且完全解决了您的问题。