(1)复制数组
数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组。
const a1 = [1, 2];
const a2 = a1;
a2[0] = 2;
a1 // [2, 2]
上面代码中,a2并不是a1的克隆,而是指向同一份数据的另一个指针。修改a2,会直接导致a1的变化。
ES5 来复制数组:
const a1 = [1, 2];
const a2 = a1.concat();
a2[0] = 2;
a1 // [1, 2]
上面代码中,a1会返回原数组的克隆,再修改a2就不会对a1产生影响。
ES6扩展运算符提供了复制数组的简便写法:
const a1 = [1, 2];
// 写法一
const a2 = [...a1];
// 写法二
const [...a2] = a1;
上面的两种写法,a2都是a1的克隆。
本文介绍了JavaScript中数组复制的常见问题,当使用赋值操作符`=`进行复制时,实际上只是创建了指向原始数组的引用。为避免这种问题,可以使用`concat()`方法或ES6的扩展运算符`...`实现深拷贝。通过实例展示了这两种方法如何确保修改副本不会影响原数组。
2451

被折叠的 条评论
为什么被折叠?



