对 V8 到底是什么感到困惑

问题描述 投票:0回答:2

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

javascript v8
2个回答
4
投票

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

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

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

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

图片来源:sessionstack blogpost

如需更多详细信息和说明,您可以阅读了解 V8 JS 引擎。另外,这个视频教程非常有帮助,并且准确地解决了您的问题。


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.