①浅拷贝:直接将一个引用数据的地址赋值给另一个变量。
<script> var arr1 = [1, 2, 3, 4, 5]; var arr2 = arr1; //将arr1赋值给arr2,直接赋值,赋值的是内存地址 arr1[0] = '改变'; //对arr1操作,arr2也会改变,同样对arr2操作,arr1也会改变 console.log(arr1, arr2); //输出结果相同 </script>
浅拷贝:赋值的是内存地址;一个操作,另一个也会改变
②深拷贝:赋值应用类型中的数据,而不是内容。
<script> var arr1 = [1, 2, 3, 4, 5]; var arr2 = []; arr1.forEach(function(val){ arr2.push(val); //循环遍历,将arr1中的数据赋值给arr2 }) console.log(arr2); //赋值后的arr2数组 arr1[0] = '改变'; //对arr1进行操作 console.log(arr1,arr2); //数组arr2不会受影响 </script>
深拷贝:赋值的是内容;对一个操作,不会影响另一个。