什么是V8?

V8 看成是一个虚构出来的计算机,也称为虚拟机,虚拟机通过模拟实际计算机的各种功能来实现代码的执行,如模拟实际计算机的 CPU、堆栈、寄存器等,虚拟机还具有它自己的一套指令系统。

V8引擎执行JavaScript代码前做了哪些准备工作?

在 V8 启动执行 JavaScript 之前,它还需要准备执行 JavaScript 时所需要的一些基础环境,这些基础环境包括了“堆空间”“栈空间”“全局执行上下文”“全局作用域”“消息循环系统”“内置函数”等,这些内容都是在执行 JavaScript 过程中需要使用到的,比如:

  1. JavaScript 全局执行上下文就包含了执行过程中的全局信息,比如一些内置函数,全局变量等信息;
  2. 全局作用域包含了一些全局变量,在执行过程中的数据都需要存放在内存中;
  3. 而 V8 是采用了经典的堆和栈的内存管理模式,所以 V8 还需要初始化内存中的堆和栈结构;
  4. 另外,想要我们的 V8 系统活起来,还需要初始化消息循环系统,消息循环系统包含了消息驱动器和消息队列,它如同 V8 的心脏,不断接受消息并决策如何处理消息。

V8引擎执行JavaScript代码的流程?

  1. 一段简单的JS代码 ;
    var str = "test";
  2. 首先被解析器优化成AST语法树,在生成AST语法树的同时,还会生成作用域;
  3. AST树转换成字节码;
  4. 最后交给解释器执行。

1.png

原始值与引用值


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

摄影基础知识 上一篇
PWA使用调研 下一篇