1、关于数据结构
(1)栈数据结构
栈数据结构的特点是先进后出,后进先出。类比于乒乓球盒子。
(2)堆数据结构
堆数据结构是一种树状结构。类似于JSON的key-value形式,无需知道存储顺序,只要识别键名就可以获取属性值。
(3)队列
队列是一种先进先出的数据格式,类似于安检。
2、变量对象与基础数据类型
js的执行上下文生成完成之后会创建一个叫做变量对象的特殊对象,js的基础数据类型都存储在这个特殊对象中。目前javascript中共有6种基础数据类型,分别是Number、String、Boolean、null、undefined以及ES6新增的Symbol。
3、引用数据类型与堆内存
js的引用数据类型(数组、函数、对象)大小不固定,引用数据类型的值是保存在堆内存中的对象。JavaScript不允许直接访问堆内存中的位置,因此我们不能直接操作对象的堆内存空间。在栈中会存储一个指向堆内存对象的指针,因此每次引用数据类型的改变实际上就是指针的改变。
4、内存空间管理
javascript的生命周期: 分配需要的内存、使用分配到的内存、将不再试用的内存释放。
js的标记清除是最常使用的垃圾回收机制,在局部作用域中,当函数执行完毕,局部变量也就没有存在的必要了,因此垃圾收集器很容易做出判断并回收。但是全局变量什么时候需要自动释放内存空间则很难判断,因此在我们的开发中,需要尽量避免使用全局变量。