---
title: js引擎
date: 2019-05-15 21:34:37
categories: js
tags:js
---
JavaScript引擎是一个专门处理JavaScript脚本的程序虚拟机,一般会附带在网页浏览器之中。
例如
v8,用c++编写,Google Chrome一部分,也用于node.js
JavaScriptCore ,用于webkit型浏览器,如Safari
spidermonkey,第一款JavaScript引擎,用于如Firefox
chakra(Jscript引擎),用于IE11
chakra(JavaScript引擎),用于Microsoft Edge
1.基本工作是把开发人员写的 JavaScript 代码转换成高效、优化的代码,这样就可以通过浏览器进行解释甚至嵌入到应用中。很难界定JavaScript引擎是编译器还是解释器。因为像V8引擎,为了提高JS的运行性能,在运行之前会将js编译为本地的机器码,然后再去执行机器码。
2.组成:
编译器。主要工作是将源代码编译成抽象语法树,然后在某些引擎中还包含将抽象语法树转换成字节码。
解释器。在某些引擎中,解释器主要是接受字节码,解释执行这个字节码,然后也依赖来及回收机制等。
JIT工具。一个能够JIT的工具,将字节码或者抽象语法树转换成本地代码,当然它也需要依赖牢记
垃圾回收器和分析工具(profiler)。它们负责垃圾回收和收集引擎中的信息,帮助改善引擎的性能和功效。
3.工作原理
JavaScriptCore:
源代码->抽象语法树->字节码
通过词法分析器将源代码构建为抽象语法树,解析器生成字节码,4个JIM进程分析和执行字节码。
v8:
源代码->抽象语法树->本地码
v8引擎并不将抽象语法树转化为字节码或其他中间表示,是为了减少这部分的时间,这部分在网页加载的时候完成,虽然可以提高优化的可能,但是带来巨大的时间浪费。
4.JavaScript引擎和ECMAscript的关系:前者根据后者定义的规则来解析js代码
5.JavaScript引擎和浏览器的关系
JavaScript引擎是浏览器的组成部分之一,不同的浏览器采用了不同的JavaScript引擎。
对于网页的工作来说,需要两个引擎。渲染引擎和JavaScript引擎。 渲染引擎负责网页的渲染;JavaScript引擎负责JavaScript代码执行。
JavaScript引擎提供调用接口被渲染引擎使用,渲染引擎使用的JavaScript引擎来处理js代码并获得结果。此外,JavaScript引擎需要渲染引擎提供桥接的接口以便能够访问渲染引擎构建的DOM树,操作DOM。js引擎和渲染引擎 属于互相调用的关系
网友评论