由于JS引用类型赋值时传递的是内存地址,这会导致改变其中一个变量值后,其它相关变量也会跟着改变。如果要改变这种现象,使得赋值后的两个变量不再有所关联。就需要用深拷贝方式赋值。
深拷贝是使用递归方式,遍所有引用类型并拷贝所有值类型,最终得到一个内容相同的全新引用类型数据。
代码如下 :
function deepCopy(data) {
if (data === null || typeof data != "object") {
return data;
}
if (data instanceof Array) {
let _rdata = [];
for (let i = 0; i < data.length; i++) {
const element = data[i];
_rdata.push(deepCopy(element));
}
return _rdata;
}
else {
let _rdata = {};
for (const key in data) {
const element = data[key];
_rdata[key] = deepCopy(element);
}
return _rdata;
}
}
本文解释了JavaScript中引用类型赋值导致的变量关联问题,介绍了深拷贝的概念,以及如何使用递归实现深拷贝,确保赋值后的数据独立。
468

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



