对 V8 究竟是什么感到困惑

时间:2021-04-24 21:09:22

标签: javascript v8

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

2 个答案:

答案 0 :(得分:1)

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

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

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

如果你看这个image,在边界线里面的左边,是V8提供的JS runtine环境。在右侧,您可以看到浏览器(托管环境)提供的 Web API、回调队列和事件循环。希望它澄清。

图片来源:sessionstack blogpost

有关更多详细信息和说明,您可以查看有关 V8 JS 引擎的 read。另外,这个视频 tutorial 真的很有帮助,并且准确地解决了您的问题。

答案 1 :(得分:0)

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

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

V8 允许任何 C++ 应用程序向 JavaScript 代码公开其自己的对象和函数。由您决定要向 JavaScript 公开的对象和函数。

相关问题