var a = [1, 2, 3];
var b = a; // b = [1, 2, 3];
console.log(a); // 1, 2, 3
console.log(b); // 1, 2, 3
b.splice(0, 1);
console.log(b); // 2, 3
console.log(a); // 2, 3 <----------- WHY?
我只需要复制我的oryginal&#34; a&#34;数组,因为我想永远保持[1,2,3]。如何从&#34; b&#34;中弹出第一个元素阵列没有接触到原始的阵列?感谢
答案 0 :(得分:1)
您的代码只需要一个小修复:
var a = [1, 2, 3];
var b = a.slice();
我不确定具体细节,但是当您将数组或对象分配给另一个变量时,数组/对象不会按值复制,而是通过引用复制。 .slice
方法将数组中的所有元素复制到新元素,而不是仅保存对旧元素的引用。