一、堆和栈的介绍
1、堆和队,是先进先出;栈,是先进后出,就跟水桶差不多;
2、存储速度:堆和队的存储速度较慢,栈的存储速度较快,会自动释放;
二、js中存储的类型
1、堆,一般用于复杂数据类型,存储速度较慢,例如js中的数组对象,object对象;
2、栈,主要存放一些基本类型的变量和对象的引用,栈内的数据是可以共享; 栈中new 出来的,不用共享,占用新的空间。
三、js 中垃圾的回收机制
js中的堆不需要程序代码得来显示释放,浏览器垃圾回收的基本原则:如果栈中不存在对堆中某个对象的引用,那么就认为该对象不再需要,在垃圾回收时就会清除该对象占用的内存空间。
js中最常用的方法是,围棋赋值为null。
四、堆和栈中string的使用
var str=new String(‘abc‘); 存在堆中,速度较慢,不能共享;
var str=‘abc‘;存在栈中,速度较快,可共享;
最后一个,str1与str2 的指向不一样,指向的不是同一对象,不是引用的同一数据。