个人学习笔记
是什么
机器不能直接识别javascript,需要用javascript引擎编译后才能识别
常用引擎
- Chakra, Microsoft IE/Edge
- SpiderMonkey, FireFox
- V8, Chrome
ECMA标准
为引擎实现者提供统一规范
V8 引擎工作流程
Interpreter VS Compiler
是否优化 | byteCode生成时机 | ||
---|---|---|---|
Interpreter | 逐行解释 | 不优化 | 逐行输出 |
Compiler | 解释全部 | 优化 | 解释完毕输出 |
同时使用 Interpreter VS Compiler 的优点
粘合剂:Profiler、byteCode
- Profiler 可以查找代码中可以优化的地方
- byteCode 机器代码,不能被计算机理解及执行
执行过程:
- Parser 将代码转成 AST
- AST 同时提供给 Interpreter、Profiler
- Interpreter 将 AST 逐行转为 byteCode
- Profiler 在 AST 中查找可以优化的地方,提供给 Compiler
- Compiler 将可优化的地方优化,替换掉 byteCode 中对应代码
最后
思考 JavaScript 是一门解释型语言吗?
JavaScript 是,但不完全是一门解释型语言
原因 Compiler 输出的是优化后的代码,不完全是解释
笔记来源
关于本文 译者:@梁天培_Tim 译文:juejin.cn/post/684490… 作者:@Mano lingam 原文:blog.bitsrc.io/javascript-…