最终的结论就是:解构赋值是浅拷贝(因为它确实不能对多维数组或对象达到深拷贝的作用);
02:35 【前端每日一讲】解构赋值是浅拷贝还是深拷贝? 01:57 【前端每日一讲】如何解构嵌套对象? 02:19 【前端每日一讲】解构赋值可以用于箭头函数吗? 02:43 【前端每日一讲】如何使用解构赋值简化代码? 02:05 【前端每日一讲】大规模数据解构时需要注意什么? 02:07 【前端每日一讲】什么是CSP? 03...
由此可以得出结论,解构赋值对object类型只是浅拷贝。 实际上,无论是使用扩展运算符(...)还是解构赋值,对于引用类型都是浅拷贝。所以在使用splice()、concat()、...对数组拷贝时,只有当数组内部属性值不是引用类型是,才能实现深拷贝。
总结:当数组是一维数组或对象时是深拷贝,多维时就是浅拷贝
但是,这个拷贝是只有一层的浅拷贝,还是深拷贝? let aa ={ age:18, name:'aaa', address: { city:'shanghai'} } let bb={...aa}; bb.address.city= 'shenzhen'; console.log(aa.address.city);//shenzhen 可见,aa 解构赋值到新对象 bb,只是进行了一层浅拷贝,对象 bb 中的属性(address)的属性(ci...
深拷贝:修改新变量的值不会影响原有变量的值。默认情况下基本数据类型都是深拷贝。浅拷贝:修改新变量的值会影响原有的变量的值。默认情况下引用类型都是浅拷贝。ES6的新特性,按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为 解构 。具体操作本文章不做描述。那么我们在使用解构赋值的...
浅拷贝:修改新变量的值会影响原有的变量的值。默认情况下引用类型(object)都是浅拷贝。 基本数据类型,直接用等号赋值,也都是深拷贝 引用类型,直接用等号赋值,是浅拷贝 回到解构赋值,使用如下示例代码 const a ={ name:'name', age:18, marriage:false, ...
但是,这个拷贝是只有一层的浅拷贝,还是深拷贝? let aa ={ age:18, name:'aaa', address: { city:'shanghai'} } let bb={...aa}; bb.address.city= 'shenzhen'; console.log(aa.address.city);//shenzhen 可见,aa 解构赋值到新对象 bb,只是进行了一层浅拷贝,对象 bb 中的属性(address)的属性(ci...