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

堆栈学习笔记

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5960

    回帖

    6759

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6759

    荣誉开发者喜迎中秋油中2周年生态建设者

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

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

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

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。

    发表回复

    本版积分规则

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