古树旋律 发表于 2023-5-25 00:30:28

数组的浅拷贝与深拷贝


这是属于自己学习得不扎实,出现了低级错误。导致《精灵战棋》在数组操作中出现了一个恶性BUG。以下是自己现学现卖的内容,和大家分享。

数组的直接赋值属于数组的浅拷贝,JS存储对象都是存内存地址,所以浅拷贝会导致新数组和旧数组共用同一块内存地址,其中一个数组变化,另一个数组也会相应的变化。
var a =;
var b=a;
a=30;
console.log(a,b);

//结果:    

数组内部不含有引用类型,使用slice() 、concat() 和 assign() 方法都属于数组的深拷贝,一个数组变化,另一个数组不受影响。
var a=;
var b=[].concat(a);
a=30;
console.log(a,b);

//结果:
页: [1]
查看完整版本: 数组的浅拷贝与深拷贝