栈内存「EC Stack」
-
存储原始值类型的值
-
提供代码执行的环境
堆内存 「Heap」
- 存储对象类型的值
EC 执行上下文 : 区分代码的执行环境
常见的上下文环境
-
全局上下文EC(G)
-
函数私有上下文 EC(?)
-
块级私有上下文 EC(BLOCK)
产生私有上下文环境 => 进栈执行 => 出栈释放
变量对象 : 用来存储声明的变量的地方
-
VO
-
AO
GO 全局对象
-
window指的就是全局对象GO
-
全局上下文中,基于var和function声明的变量是存储到Go中的,基于let、const声明的变量才是存储到VO中的
let ? = ? 的操作过程
创建值
-
原始值类型:直接存储到栈内存中,按值操作
-
对象类型: 按照堆内存地址来操作
-
对象 : 开辟一个堆内存空间,一次存储对象的键值对、吧空间地址赋值给变量
-
函数:内存空间存储三部分信息
-
作用域[scope]:当前所属的上下文
-
函数体中的代码,当作字符串存储
-
把函数当作普通对象存储一些静态属性和方法「name & length」
-
-
声明变量
变量和值相关联
例题
声明过程草图
所以fn(x)执行首先改0x001中的值,然后y重新赋新的地址值0x003,里面只有一项100,然后添加一项,值为200,所以答案为[100,200],[100,23]