大体分为两个步骤 1. 代码编译 2.代码执行 3.生成代码
代码编译
- 执行词法分析:代码生成最小的不可分割的单元
var a =1//分割为 var,a,=,1
- 执行语法分析: 将最小单元转为AST(抽象语法树)
代码执行
将AST 通过解释器转为 字节码 (字节码与机器码相比占用空间小) 然后执行
解释器在不断的运行中收集数据信息比如变量类型,那些函数使用较高会发送到优化编译器
优化编译器在生成优化后的编译代码
注意点
-
在函数只声明未调用,不会被解析生成AST
-
函数只被调用一次,bytecode直接解释执行
-
函数被调用多次,可能会被标记为热点函数,可能会被编译成机器码,然后执行