数组的浅拷贝之后,置空,导致浅拷贝失效的问题总结
Posted carriezhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的浅拷贝之后,置空,导致浅拷贝失效的问题总结相关的知识,希望对你有一定的参考价值。
我在项目中遇到的问题是:直接将数组置空,然后再往数组中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); // [],[]
以上是关于数组的浅拷贝之后,置空,导致浅拷贝失效的问题总结的主要内容,如果未能解决你的问题,请参考以下文章