javascript 引擎

130 阅读1分钟

个人学习笔记

是什么

机器不能直接识别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 机器代码,不能被计算机理解及执行
执行过程:
  1. Parser 将代码转成 AST
  2. AST 同时提供给 Interpreter、Profiler
  3. Interpreter 将 AST 逐行转为 byteCode
  4. Profiler 在 AST 中查找可以优化的地方,提供给 Compiler
  5. Compiler 将可优化的地方优化,替换掉 byteCode 中对应代码

最后

思考 JavaScript 是一门解释型语言吗?

JavaScript 是,但不完全是一门解释型语言

原因 Compiler 输出的是优化后的代码,不完全是解释

笔记来源

关于本文 译者:@梁天培_Tim 译文:juejin.cn/post/684490… 作者:@Mano lingam 原文:blog.bitsrc.io/javascript-…