JS高级之V8引擎和代码执行原理 您所在的位置:网站首页 webapp框架执行js的原理 JS高级之V8引擎和代码执行原理

JS高级之V8引擎和代码执行原理

2023-07-28 21:38| 来源: 网络整理| 查看: 265

当js引擎会在执行代码之前,会在堆内存中创建一个全局对象:Global Object(GO)

该对象 所有的作用域(scope)都可以访问 里面会包含Date、Array、String、Number、setTimeout、setInterval等等 其中还有一个window属性指向自己

js引擎内部有一个执行上下文栈(Execution Context Stack,简称ECS),它是用于执行代码的调用栈

当它执行全局代码块的时候会构建一个全局执行上下文 Global Execution Context(GEC)

GEC会 被放入到ECS中 执行,其中包含两部分内容

第一部分:在代码执行前,在parser转成AST的过程中,会将全局定义的变量、函数等加入到GlobalObject中, 但是并不会赋值,此过程也叫变量的作用域提升(hoisting) 第二部分:在代码执行中,对变量赋值,或者执行其他的函数

在执行的过程中执行到一个函数时,就会根据函数体创建一个函数执行上下文(Functional Execution Context, 简称FEC),并且压入到EC Stack中

FEC中包含三部分内容:

第一部分:在解析函数成为AST树结构时,会创建一个Activation Object(AO) AO中包含形参、arguments、函数定义和指向函数对象、定义的变量 第二部分:作用域链:由VO(在函数中就是AO对象)和父级VO组成,查找时会一层层查找 第三部分:根据不同情况this绑定值


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有