V8引擎的执行过程

55 阅读1分钟

解析器

将源代码转换为 AST 抽象语法树 image.png

解释器

(AST -> 字节码)解释器也可以直接执行字节码 image.png

编译器

字节码转换为机器代码 image.png

完整过程: image.png 注意:字节码和机器代码都可以执行,V8 会把常用的代码转换为机器代码,这是一种优化策略,机器代码执行速度快。

在某些情况下,优化后的代码可能被逆向还原成字节码,因为JS 是动态语言没有类型校验。 image.png 如上图所示:如果 sum 函数之前被转换为 机器代码,但是传参如果和之前不同,则会逆向还原成字节码。