问题
用以下代码把arr1直接赋值给arr2的话,我们会发现arr1也一起发生了改变,这是因为我们这样做,其实是对内存堆栈的引用,而不是真正的赋值。
let arr1 = ['www','demoJx','com']
let arr2 = arr1
console.log(arr2) //打印为 ['www','demoJx','com']
arr2.push('one')
console.log(arr1) //打印为['www','demoJx','com','one']
解决
我们把赋值部分修改成let arr2 = […arr1]
利用ES6的扩展运算符,先将arr1扩展出来,即此时…arr1的内容为’www’,‘demoJx’,‘com’
再赋值给arr2,这样才做到真正的赋值
let arr1 = ['www','demoJx','com']
let arr2 = [...arr1] //这里把arr1扩展出来再组成数组
console.log(arr2) //打印为 ['www','demoJx','com']
arr2.push('one')
console.log(arr1) //打印为['www','demoJx','com']