浅谈JS引擎

本文介绍了JavaScript引擎的工作原理,特别是V8引擎。JS引擎执行主要包括语法分析、预编译和执行阶段。在预编译阶段,会经历全局环境、函数环境和eval环境,并创建执行上下文,以栈的形式管理。在创建执行上下文时,会创建变量对象、作用域链并确定this的指向。作用域链确保了对变量和函数的有序访问。
摘要由CSDN通过智能技术生成

JS 引擎

我们知道不同的浏览器有不同的 JS 引擎。我们经常接触到的是 V8引擎(V8是谷歌发布的开源的 JavaScript 引擎,采用 C++ 编写,在谷歌的 Chrome 浏览器中被使用)

JS引擎执行过程大致分为下面三个阶段 :

一、语法分析

二、预编译阶段

三、执行阶段

注意:浏览器先按照 js 的顺序加载 <script> 标签分隔的代码块,js 代码块加载完毕后会执行上面三个阶段。接着会找下一个代码块,继续执行上面的三个阶段。这些脚本代码块都在同一个全局作用域中。

预编译阶段之 JS 运行环境

1、全局环境(JS 代码加载完毕后进入到预编译环境也就是全局环境)

2、函数环境(函数调用的时候进入到该函数环境,不同的函数,函数环境不同)

3、eval 环境

注意:每进入到一个不同的运行环境都会创建一个相应的执行上下文,在一段 js 代码中一般会创建多个执行上下文,js 引擎会以栈的数据结构对这些执行进行处理,形成函数调用栈(使用栈存取的方式管理运行环境)。栈底永远是全局执行上下文,栈顶则永远是当前执行上下文。

js 代码加载完毕后首先创建全局执行上下文,推入到 stack 中;调用函数的时候,进入该函数的运行环境,创建该函数的执行上下文,推入 stack 中;当该函数执行完毕后,栈顶该函数执行上下文首先出栈;全局上下文在浏览器或者该标签关闭时出栈。

注意:不同的运行环境执行都会进入到代码预编译和执行阶段,语法分析则在代码加载完时统一检查

执行上下文可以理解为当前执行环境&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值