简单数据类型
简单数据类型 指在存储变量中存储的是值本身 包括string,number,boolean ,underfined,null
复杂数据类型
复杂数据类型(引用类型)指在存储时变量中的存储仅仅是地址(引用),通过new关键字创建的对象(系统对象,自定义对象),比如Object,Array,Date等等
堆栈
栈
栈(操作系统) 表示由操作系统自动分配释放春芳函数的参数值 局部变量的值等等
简单数据类型存放在栈里面
堆
堆(操作系统) 用来存储复杂数据类型(例如对象等等) , 一般是由程序员分配释放 ,如果不释放的话,
由垃圾回收机制回收
存储方式
简单数据类型的存储方式
值类型变量的数据直接存放在变量(栈)中
复杂数据类型的存储方式
引用类型变量(栈)里存放复杂数据类型的地址
真正的对象实例存放在堆中间中
传参
简单数据传参
函数的形参可以看作一个变量,当我们吧一个值类型变量作为参数传给函数的形参是,其实是吧变量在栈空间里的值复制了一份给形参,那么在方法内部堆形参做任何修改,都不会影响外部的变量。
function fn(a) {
a++;
console.log(a);
}var x = 10;
fn(x);
console.log(x);
运行结果为
复杂数据类型传参
函数的形参也可以看做是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象。