什么是 JavaScript 引擎

什么是 JavaScript 引擎

简单来讲,就是能够将 Javascript 代码处理并执行的运行环境。

JavaScript 语言是一种解释性脚本语言,因此在运行时,需要先将代码转变成抽象语法树,然后在抽象语法树上解释执行。

当然为了提高 js 的执行速度,同时随着 JIT (Just In Time)的技术引入,现在的 js 引擎大多会做一些性能优化,就是在执行前会将抽象语法树再转成一个中间表示(这个中间表示可能是字节码,也可能是直接转成本地代码)。这样就会极大的提高代码的执行速度。

不过 js 从抽象语法树转成中间表示的过程都是处在代码执行阶段的(解释性语言并不像编译性语言那样,编译和执行是分开的),所以在代码执行阶段进行额外的转换本身也是需要开销的。

综上描述,一个 JavaScript 引擎一般需要包括以下几个部分

  • 编译器。主要工作是将源代码编译成抽象语法树,在某些引擎可能还包含了将抽象语法树转换成中间表示(字节码)。
  • 解释器。在某些引擎中,解释器主要是接收字节码,解释执行这个字节码,同时也依赖垃圾回收机制等。
  • JIT 工具。一个能够 JIT 的工具,将字节码或者抽象语法树转换成本地代码。
  • 垃圾回收器和分析工具。它们负责垃圾回收和收集引擎中的信息,帮助改善引擎的性能和功效。

JavaScript 引擎和渲染引擎

之前在说 DOM 树的构建的时候,了解过在 HTML 解释器的工作过程中,可能会有 JavaScript 代码需要执行,而渲染引擎主要负责渲染页面。js 引擎提供调用接口给渲染引擎,以便让渲染引擎使用 js 引擎来处理 js 代码并获取结果。渲染引擎同时需要提供桥接接口让 js 可以访问 DOM。它们之间属于互相调用的关系。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值