栈数据结构:先进后出,后进先出
堆数据结构:数据没有固定顺序,在堆操作在堆操作数据可以任何顺序操作
实例:
var num =10;
var bol =true;
var str ="abc”;
var obj = new Object();
var arr = ['a','b','c'];
var person = new Person(100,"jxl",22);
1.基本数据类型:
Number,boolean,string,Undefined, Null,放在栈内存中
简单数据段 数据大小确定 内存空间自动分配
2.对象:
object ,arr构造函数对象
对象的名称存储在栈,对象的内容属性都在堆区
值拷贝:
var a = 10;
var b = a;
console.log(a = b);
//拷贝的是a的值,b是重新开辟的空间
对象引用:
var a =[1,2,3,4,5];
var b =a;
//此时b=[1,2,3,4,5];是在堆中取得a的地址,
b和a共用一个地址,a,b有任何一个数值改变,都会变
例:函数传参---对象引用
var a = [1,2,3];
function test(num){
//相当于num =a;把对象当做参数传递到函数内部,也是对象引用
//1.如果对参数进行操作,对象也会发生变化
// num[0]=4;
// num[1]=5;
// num[2]=6;
//2.如果对参数重新赋值,对象不会跟着改变
// num =[4,5];
}
test(a);
console.log(a);