首先要了解什么是深拷贝和深拷贝有关系的另一个术语浅拷贝又是啥?
其实深拷贝和浅拷贝都是针对的引用类型,js中的变量类型分为值类型(基本类型)和引用类型;对值类型进行复制操作会对值进行一份拷贝,而对引用类型赋值,则会进行地址的拷贝,最终两个变量指向同一份数据
//基本类型
var a = 1;
var b = a;
a = 2;
console.log(a,b)//2,1 a b指向不同的数据
//引用类型指向同一份数据
var a = {c: 1}
var b = a
a.c = 2
console.log(a,b)//2,2 a b指向同一份数据
对于引用类型,会导致a b指向同一份数据,此时如果对其中的一个进行修改,就会影响到另外一个,有时候这可能不是我们想要的结果,如果不清楚的话,还可能造成不必要的bug。那如何切断a和b之间的关系呢,可以拷贝一份a的数据,根据拷贝的层级不同可以分为浅拷贝和深拷贝,浅拷贝就是只进行一层拷贝,深拷贝就是无限层级拷贝