数组作为Javascript中的变量赋值

时间:2018-03-30 19:18:57

标签: javascript

如果:

    var x = [1, 2, 3];
    var y = [4, 5, 6];
    var z = x;

然后是z[2] = y[0];

为什么console.log(x);[1, 2, 4]而不是[1, 2, 3]

3 个答案:

答案 0 :(得分:2)

执行var z = x;时,您没有创建一个完全独立于x的新数组,而只是创建对原始数组的引用。因此,两者都发生了变化。

如果要创建新对象,可以使用新的ES6扩展运算符

var z = {...x};

请查看此answer,以获得有关按引用和值传递的更深入说明。

答案 1 :(得分:1)

Cuz the' z'变量是一个指向同一数组的指针,即' x'指向。

答案 2 :(得分:0)

JavaScript中的数组也是object,变量只将 reference 保存到对象,而不是对象本身。因此,两个变量都引用相同的对象。所以通过一个变量在其他变量中反映也是如此。



var x = [1, 2, 3];
var y = [4, 5, 6];
var z = x;
z[2]=y[0];
console.log(x);

var w=Object.assign([],x);
w[0]=y[1];
console.log(x);
console.log(w);




看一下这个例子。如果您想要更改新变量,并且不希望在原始变量中反映出更改,而不是使用Object.assign