Javascript变量赋值|

Javascript变量赋值|,javascript,variable-assignment,Javascript,Variable Assignment,也许这是一个愚蠢的问题:) 理想情况下,x[0]应该是1,但为什么是5?x包含数组第一个元素的地址,x=y将其传递给y。所以y[0]和x[0]是一样的。这是因为x[0]将地址生成为x+0,y[0]生成为y+0。因为y和x是相同的,所以y[0]和x[0]指向相同的位置。变量x和y都包含对相同数组的引用(这就是对象值)。只有一个数组,即您正在修改其0索引的数组。您复制的是引用,而不是数组的值。您要做的是实际克隆阵列。 var x = [1, 2, 3]; var y = x; // Value

也许这是一个愚蠢的问题:)


理想情况下,x[0]应该是1,但为什么是5?

x包含数组第一个元素的地址,x=y将其传递给y。所以y[0]和x[0]是一样的。这是因为x[0]将地址生成为x+0,y[0]生成为y+0。因为y和x是相同的,所以y[0]和x[0]指向相同的位置。

变量
x
y
都包含对相同数组的引用(这就是对象值)。只有一个数组,即您正在修改其
0
索引的数组。您复制的是引用,而不是数组的值。您要做的是实际克隆阵列。
var x = [1, 2, 3];
var y = x;   // Value of x is stored in y
y[0] = 5; 
alert(x[0]); // returns 5. Why?