js高级——day1

语言特点

  1. JavaScript是一门高级语言

  2. 高级语言

    1. 编译型——将高级语言编写的文件转化为可执行文件后直接执行

    2. 解释型——机器逐行执行高级语言编写的文件

浏览器工作原理【从下载到渲染】

image-20240813174849298

  1. 浏览器内核——解析从服务器下载的html、css、js文件

  2. 浏览器排版引擎——通常所说的浏览器内核,负责渲染页面

    1. 排版引擎:也称为浏览器引擎、页面排版引擎、排版引擎

      1. HTML Parser、CSS Parser:解析html和css

      2. 三角DOM:表示HTML Parser生成的DOM树可通过JavaScript修改,解析JavaScript使用的是js引擎(浏览器排版引擎)

      3. 浏览器排版引擎首先解析HTML和css文件,生成每个元素的样式后再进行布局,然后渲染【个人理解:首先生成背景色、字体颜色等样式,而后解析display、float等布局样式】

JavaScript引擎

  1. 无论JavaScript在浏览器还是node环境下执行,都需要将其转化为CPU可执行的机器语言,所以需要JavaScript引擎对JavaScript代码进行转化

  2. 浏览器引擎和JavaScript引擎的关系

    1. 也就是说c++开发的应用程序可以使用JavaScript进行功能扩展

v8引擎执行原理

  1. AST语法树——源代码的抽象语法结构的表示,通常是编译过程的第一步

    1. 实现ast语法树有利于语言结构的转化,如es9语法的JavaScript代码转化为es5语法的代码,typescript代码转化为JavaScript代码

  2. Ignition库——将ast语法树转化为字节码

    1. 转化为字节码的原因:

      1. 每个操作系统执行的字节码是不同的,所以不能直接将JavaScript代码转化为字节码,需要通过Ignition库进行转化

  3. 预解析

    1. Lasy Parsing(延迟解析):不必要立刻执行的函数进行预解析,只解析立刻执行的代码,直到函数需要执行的时候才进行解析

  4. 解析的过程只进行变量、函数声明,不进行赋值和函数执行

v8引擎执行过程

  1. 代码解析,生成AST树,创建全局对象global object(GO),将变量创建在GO中,不赋值【作用域提升】

  2. 代码运行

    1. v8为了执行代码,内部会生成上下文调用栈(Execution Context Stack ECStack)(函数调用栈)

    2. 为了执行全局代码,v8引擎会创建 全局执行上下文,类似全局函数

      1. 全局函数有VO(variable object)对象,全局函数的VO对象执行GO

      2. 普通函数也有对应的VO对象,但不指向GO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值