码迷,mamicode.com
首页 > 编程语言 > 详细

数组的浅拷贝之后,置空,导致浅拷贝失效的问题总结

时间:2020-02-18 16:20:06      阅读:27      评论:0      收藏:0      [点我收藏+]

标签:tps   需要   收获   数组   length   链接   target   bsp   应该   

我在项目中遇到的问题是:直接将数组置空,然后再往数组中push失效。

搜了一下收获颇丰,找到了关于浅拷贝失效的问题总结,参考链接: 9.23 项目4.2.0中数组的浅拷贝之后 置空导致浅拷贝失效的问题总结

// 1.最常见的浅拷贝,使用push
let a=[2]
let b=a
a.push(3)
console.log(a,b);
// [ 2, 3 ] [ 2, 3 ]


// 2.此时如果将a直接赋值为其他数组,那么a和b会直接解除绑定,b不会随着a更新而更新,而是保持之前的值

let a2=[2]
let b2=a2
a2=[2,3]
console.log(a2,b2);
// [ 2, 3 ] [ 2]

// 3.此时如果将a赋值为[]空数组,那么a和b会直接解除绑定,b不会随着a更新而更新,而是保持之前的值
let a3=[2]
let b3=a3
a3=[]
console.log(a3,b3);
// [] [ 2]

// 4.那么如果我需要置空,但是不想解除绑定,应该怎么做呢?此时采用length=0赋值为空,可看出绑定关系未解除
let a4=[2]
let b4=a4
a4.length=0;
console.log(a4,b4);
// [],[]

 

数组的浅拷贝之后,置空,导致浅拷贝失效的问题总结

标签:tps   需要   收获   数组   length   链接   target   bsp   应该   

原文地址:https://www.cnblogs.com/carriezhao/p/12326630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!