V8引擎工作原理

V8引擎工作原理

1.V8引擎是干什么的?

V8的工作是将js代码翻译为CPU指令。

2.V8工作过程
  1. Blink将js源码交给V8引擎

  2. Stream对js源码编码

  3. Scanner进行词法分析,将代码转为token

  4. token转化为AST树

    • Parser将tokens直接转化为AST树
    • PreParser(预编译)
      • 有些代码不是一开始就运行,加载其会影响网站的运行效率,V8利用Lazy Parsing(延迟解析)
  5. AST树通过ignition转化为字节码

  6. 执行代码

V8工作过程

图1 V8工作过程
注释
  • token是什么?

  • Lazy Parsing是什么?

    有些代码不是一开始就运行,将这些代码进行预解析,只解析出需要它的那一部分

    e.g

    function out(){
        function inner()
    }
    

    这种情况就会对inner进行预解析

  • AST树是什么?抽象语法树,类似于下图的数据结构(与json类似)

Token示例

图2 Token示例

 AST树示例

图3 AST树示例
可以浏览这个网站查看对应程序的AST树和Token

https://esprima.org/demo/parse.html

总结

V8引擎首先对源码进行Parse(解析)生成token,然后对token进行编码生产 AST(Abstract Syntax Tree)抽象语法树,然后AST通过ignition转化为字节码,然后对token进行编码生产 AST(Abstract Syntax Tree)抽象语法树,然后AST通过ignition转化为字节码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是小白白白呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值