JavaScript 运行机制
生成 AST 和执行上下文
分词 tokenize 词法分析
将代码拆解为一个个 token——语法上不能再分的字符串
解析 parse 语法分析
将 token 数据根据语法规则转成 AST,如果出现语法错误,则终止并抛出异常。
生成字节码
解释器将 AST 转为字节码
执行字节码
解释器将字节码转为机器码并执行
为什么不直接转为机器码?
在之前版本的 Chrome,是直接转为机器码。但由于存放机器码需要占用大量的内存,不适用于移动端。
JIT 即时编译
如果有些代码被多次执行,则将其编译为高效的机器码