Appearance
JS 的存储结构
栈结构
调用栈
管理函数调用的关系的一种数据结构
函数调用
运行一个函数,函数名称跟着一对小括号执行
栈
一种数据结构,后进先出
总结
在执行上下文创建以后,JavaScript 引擎会将执行上下文压入栈中,把这种管理执行上下文称为执行上下文栈,即调用栈 函数执行完毕之后,JavaScript 引擎会将函数的上下文出栈
栈溢出
调用栈是有大小的(容量限制),超过一定数目,就会栈溢出
内存空间
代码空间、栈空间、堆空间
基本原始类型
Number, String, Boolean, Undefined, Null, Symbol, BigInt(存放安全数据,超出范围安全处理)
引用类型
Object
代码空间
存放可执行代码
栈空间
基本原始类型数据存放与栈空间中(调用栈)
堆空间
引用类型存放与堆空间中(存放的是引用地址)
JS 内存管理 变量分配
静态区
- 存放全局变量(基本类型)
调用栈
- 栈中执行上下文(作用域链 = 变量对象、this 指向环境)
- 只能读写自己栈帧的内存
- 调用栈调用结束自然销毁,实时性高
堆
- 对象、数组、函数(引用类型)
- 动态的读写
- 不具备很高的实时性,由单独的 gc 线程控制