Karam
Articles34
Tags31
Categories11
编译器和解释器

编译器和解释器

编译器和解释器

编译器语言在程序执行之前,编译器把原本的代码翻译成二进制,机器能读懂的语言,然后保存二进制文件,方便下一次运行的时候直接读取
解释型语言每次运行都需要解释器动态编译和执行

V8是如何执行一段JS代码的

  1. 生成抽象语法树和执行上下文
    其中Babel代码转换器就是将ES6的语法树转为ES5的语法树
    ESLint利用AST来检查代码规范
  2. 字节码
    字节码是AST和机器码之间的一种代码,机器码的运行十分高效但是占用内存非常多,像手机的执行内存有限的情况下会占用过多的内存,所以V8采用字节码,通过解释器解释成机器码后执行
  3. 执行代码
    如果一条代码执行多次,就会被认为是热点代码,然后被编译器编译为机器码,然后保存二进制文件,保证高效执行,这个技术叫做JIT即时编译器

JS代码如何优化

  1. 提升单词脚本的执行速度,避免JS的长任务霸占主线程,使界面快速响应交互
  2. 避免大的内联脚本,因为在解析HTML的过程中,解析和编译也会占用主线程
  3. 减少JS文件的容量