【JavaScript】JavaScript 与 V8

浏览器中运行 html 和 css 代码:

在这里插入图片描述

html 和 css 执行过程:

在这里插入图片描述

js 由 js 引擎(比如现在最为主流的 V8)执行。

  • 高级的编程语言都是需要转成最终的机器指令来执行的;
  • 事实上我们编写的JavaScript无论你交给浏览器或者Node执行,最后都是需要被CPU执行的;
  • 但是CPU只认识自己的指令集,实际上是机器语言,才能被CPU所执行:
  • 所以我们需要JavaScript 引擎帮助我们将JavaScript代码翻译成CPU指令来执行;

一般来说,js 引擎包含两部分:

  1. WebCore:负责 html 解析,布局,渲染等工作
  2. JavaScriptCore:解析,执行 js 代码

在小程序中,编写的 wxml、wxss 是由渲染层执行的(WebView,直接调用原生 IOS / Android WebView 渲染),js 是由 jsCore (逻辑层)解析执行。

V8 引擎原理图:

在这里插入图片描述

在这里插入图片描述

js源代码 到 ast 的过程中有词法分析(词法分析将代码转换为 tokens)和语法分析两个过程。

ast 到 字节码主要是 为了 后续的兼容性处理做准备,因为不同系统上的 cpu 处理机制也不同。

tokens 转换为 ast 经过 parser 和 preParser:

  • Parser就是直接将tokens转成AST树架构;
  • PreParser称之为预解析,为什么需要预解析呢?
    • 这是因为并不是所有的)avaScript代码,在一开始时就会被执行。那么对所有的)avaScript代码进行解析,必然会影响网页的运行效率;
    • 所以V8引擎就实现了Lazy Parsing(延迟解析)的方案,它的作用是将不必要的函数进行预解析,也就是只解析暂时需要的内容,而对函数的全量解析是在函数被调用时才会进行;
    • 比如我们在一个函数outer内部定义了另外一个函数inner,那么inneri函数就会进行预解析;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秀秀_heo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值