对 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 非常有帮助并且完全解决了您的问题。
我知道 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 非常有帮助并且完全解决了您的问题。