李恒道 发表于 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已经确定了

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

创建函数后将内存地址与对应函数名进行关联
页: [1]
查看完整版本: 堆栈学习笔记