上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

堆栈学习笔记

[复制链接]

182

主题

1389

帖子

757

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
757
发表于 2021-8-22 23:33:03 | 显示全部楼层 | 阅读模式

WARNING

由于初学这方面内容,可能存在大量的理解错误,没地方写,单纯拿这里当笔记本了,请勿当作参考

执行环境

js代码所运行的环境,通常是浏览器引擎等,用于初始化各种空间以及堆栈等等。

执行环境栈

页面在渲染后,会初始化一片内存空间放置一个执行环境栈ECS,用于代码的执行

执行上下文

方便在不同代码作用域得代码相互隔离

VO/VOG

全局变量对象,用于存在全局上声明的对象

ECG

全局执行上下文,包含VOG以及全局执行代码

当ECG完成后会回收代码空间以及基础数据类型空间

对象的回收取决于GC回收机制

Go

Go为全局对象,Go包含了我们windows下的一些常用操作函数,如Setinterval等,不属于ECS空间内。

代码的过程

代码在运行时首先会被Sacnner扫描为最小token化

然后进行预编译,不编译具体代码,仅编译作用域等做sharkingtree操作后进行编译

然后转化为字节并且运行

对象

对象创建于堆内存中,在vog为引用内存地址形式存在

EC

函数私有上下文

AO

私有函数上下文变量存储对象

函数初始化操作

确定作用域链

确定this

初始化arguments

形参赋值

变量提升

执行代码

创建函数

创建函数与变量类似

淡出开辟一个堆内存存放字符串形式代码

创建函数的时候它的作用域scopt已经确定了

即创建函数所在时的执行上下文

创建函数后将内存地址与对应函数名进行关联

混的人。

发表回复

本版积分规则

快速回复 返回顶部 返回列表