var a1 = [1,2,3];
var a2 = a1;
a2[0] = 90;
console.log(a1[0]) //90
解析:數組是復合的數據類型,直接復制的話,只是復制了指向底層數據結構的指針,而不能克隆一個全新的數據;
上面的代碼中,a2並不是a1的克隆,而是指向同一分數據的另一個指針。修改a2,會直接導致a1的變化。
es5 可以同過下面的方法來克隆一個新的數組:
方法1:
var a1 = [1, 2, 3];
var a2 = a1.concat();
a2[0] = 90;
console.log(a1[0]) //1
方法2:
var a1 = [1, 2, 3];
var a2 = JSON.parse(JSON.stringify(a1));
a2[0] = 90;
console.log(a1[0]) //1
es6克隆一個新的數組的方法:
const a1 = [1,2,3];
寫法一:
const a2 = [...a1];
寫法2 :
const [...a2] = a1;