js引擎

作者: 豌豆儿_e31d | 来源:发表于2019-05-15 21:47 被阅读0次

    ---

    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引擎和渲染引擎 属于互相调用的关系

    相关文章

      网友评论

          本文标题:js引擎

          本文链接:https://www.haomeiwen.com/subject/xjqvaqtx.html