三种数据结构
JavaScript没有堆内存和占内存之分,可以粗暴理解JavaScript所有数据存储于堆内存之中。
栈数据结构
先进后出,后进先出。执行上下文的执行顺序借鉴了栈数据结构的存储方式。
堆数据结构
树状结构存储,存取和顺序无关。
队列
先进先出,为事件循环机制铺垫
变量对象和基础数据类型
基础数据类型:Null Undefined Boolean String Number
执行上下文生成会产生名叫变量对象的特殊对象,基础类型的值可以通过变量对象直接访问值
ES6新增基础数据类型Symbol
引用数据类型与堆内存
引用数据类型的值存储于堆内存中的对象,通过保存在变量对象中的引用地址(或地址指针)访问,该地址与堆内存的实际值关联
// demo02.js
var m = { a: 10, b: 20 }
var n = m;
n.a = 15;
// 这时m.a的值是多少 15
内存空间管理
JavaScript具有自动垃圾收集机制
var a = 20; // 在内存中给数值变量分配空间
alert(a + 100); // 使用内存
a = null; // 使用完毕之后,释放内存空间
- 使用变量完毕,释放内存空间
- 尽可能避免全局变量的使用
- JavaScript中采用标记清除算法找到不使用的变量对象,a=null是一个释放引用的操作,让a原本对应的值失去引用,脱离执行环境
参考文章:内存空间详解