一、JS runtime environment(运行时)

JS代码需要在相应的JS runtime environment中运行,常见的浏览器和node.js都有JS runtime environment:
image.png
浏览器和node.js的runtime environment不同,其内置的api也不同。
JS runtime environment里包括JS Engine,event loop,api,callback queue和microtask queue。

二、JS Engine

JS Engine负责处理JS代码,是JS运行的关键。它接收我们编写好的JS代码作为input,然后执行以下三步:

  1. Parsing(解析):负责把一行行代码解析成AST(Abstract Syntax Tree, 抽象语法树)
  2. Compile(编译):同时对AST进行解释和编译优化,转换成机器码
  3. Execution(执行):接收low level的机器码并快速执行

image.png
上图为Google官网的V8架构图。

三、JIT compilation(Just in time,即时编译)

JIT compilation是JS特有的编译方式,指解释和编译同步运行。其中,Compiler有很多优化器。
image.png
Interpreter和Compiler之后形成的Bytecode(机器码)在执行的过程中离不开JS Engine的两个重要组件:

  • Memory Heap:用于内存分配管理,由garbage collector进行垃圾回收处理
  • Callback Stack:用来存储待执行的task

参考:

  1. JS Engine EXPOSED 🔥 Google’s V8 Architecture 🚀 | Namaste JavaScript Ep. 16