1.深拷贝和浅拷贝是什么?
我们知道,在JavaScript中有基本数据类型和引用数据类型.它们存储的方式是不相同的.
- 基本数据类型是保存在栈内存中
- 引用数据类型是保存在堆内存中,栈内存中保存的是指向堆内存的地址.
var a =1
var b=a
a=2
console.log(a,b)// 2 1 说明a值的改变,b值不改变
结果:a改变b不改变
var a=[1,2,3,4]
var b=a
a[1]=0
console.log(a,b)// [1,0,3,4] [1,0,3,4]
结果:a改变,b同时改变
所以说,深拷贝和浅拷贝的区别在于,
- 深拷贝是A复制了B,当B变化时,A不会改变
- 浅拷贝是A复制了B,当B变化时,A也会改变
引用数据类型保存方式
![d934ce9035c21d484c32da3efbfc325c.png](https://img-blog.csdnimg.cn/img_convert/d934ce9035c21d484c32da3efbfc325c.png)
这是栈内存,我们可以看到,基本数据类型是直接保存在栈内存中的.它们的赋值方式,是直接在栈内存中开辟一个新的存储空间.所以之间是不会相互影响的.