let arr1 = [1,2,3]
let arr2 = arr1
arr1 = []
console.log(arr1,arr2) // [] [1,2,3]
为什么arr2不是[]呢?数组的赋值应该是浅拷贝吧。 如果arr1=[]的话,那么arr2也应该为空才对啊
因为你不是把arr1的每一项设置成空
而是直接把arr1重新指向了一个空数组
这样它的地址和arr2就不一样了
你改成arr1[1]=111再试
赋值≠浅拷贝
let arr1 = [1, 2, 3]
let arr2 = arr1
// let arr2 = arr1.slice() // 浅拷贝
// let arr2 = [...arr1] // 浅拷贝
arr2.length = 0
console.log(arr1, arr2)
arr2 = arr1
赋值的时候也只是浅拷贝赋值,共用一个地址
但arr1 = []相当于重新赋值
然后重新开辟了一块空间
所以就互不影响了