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

堆栈学习笔记

[复制链接]
  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 56 天

    [LV.5]常住居民I

    352

    主题

    3110

    帖子

    3115

    积分

    管理员

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

    Rank: 10Rank: 10Rank: 10

    积分
    3115

    猫咪币纪念章国庆纪念章中秋纪念章荣誉开发者家财万贯管理员

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

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

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

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。

    发表回复

    本版积分规则

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