一、数据类型
- 基本数据类型:String,Number,Boolean,undefined,null
基本数据类型都是存放栈内存中 - 复杂数据类型:Object (array,date,reg都属于Object)
复杂数据类型存放在堆内存中
二、浅拷贝
- 浅拷贝:传参时值只传递了引用空间的地址
- 浅拷贝是指只复制一层对象,当对象的属性是复杂数据类型时,实质复制的是其引用,当引用指向的值改变时也会跟着变化
let arr= [0,1,2,3,4];
let newArr = arr;
newArr[0] = 5;
console.log(arr,newArr); //arr[5,1,2,3,4]
//newArr[5,1,2,3,4];
-浅拷贝 运行结果相互影响
三、深拷贝
- 深拷贝:开辟空间,且赋值
- 深拷贝会开辟新的栈内存,原对象和新对象不共享同一块内存,修改新对象不会影响到原对象。
var a=[1,2,3]
var b=a.slice(0);
b.push(4);
console.log(b); //1,2,3,4
console.log(a); //1,2,3
- 深拷贝 运行结果互不影响