关于js数组浅拷贝的问题

2020-08-14  本文已影响0人  Eirmood
js代码 运行结果

问题:在调用方法前把数据data=[]清空了,为什么后面调用的时候数据还是不断堆集?
让我们打印一下link


link数据

问题出在了data=link这步赋值操作上,浅拷贝就是复制一份引用,所有引用对象都指向一份数据,并且都可以修改这份数据,也就是说data 和 link指向了同一块内存.

解决方法:
1、扩展运算符
data = [...link]

2、使用for循环
if (key > 0) {
data = []
for (var i = 0; i < link.length; i++) {
data.push(link[i]);
data.push('哈哈');
}
}

上一篇 下一篇

猜你喜欢

热点阅读