Javascript 数组中的重复变量,但不打算重复

Javascript 数组中的重复变量,但不打算重复,javascript,arrays,Javascript,Arrays,我有一段非常小的代码 for(var i = 0; i < 4; i ++) { var ball = balls[i]; totalBalls.push( ball ); } 为什么数组中的第二个元素与数组中的第一个元素相同 为什么数组中的第二个元素与数组中的第一个元素相同 对象保留为引用,即 a = {foo: 'bar'}; a.foo; // "bar" b = a; b.foo = null; a.foo; // null 因此,当您执行push时,它不会创建

我有一段非常小的代码

for(var i = 0; i < 4; i ++)
{
    var ball = balls[i];
    totalBalls.push( ball );
}
为什么数组中的第二个元素与数组中的第一个元素相同

为什么数组中的第二个元素与数组中的第一个元素相同

对象保留为引用,即

a = {foo: 'bar'};
a.foo; // "bar"
b = a;
b.foo = null;
a.foo; // null

因此,当您执行
push
时,它不会创建一个新对象,它是
ball
的克隆,而是创建一个新引用,指向
ball
在内存中已经存在的位置。

对象是引用,而不查看“balls”数组是如何初始化的,很难给出准确的答案。因此,基本上我需要为for循环中使用的每个球创建一个新球?根据您在此处发布的内容,我假设原始数组中的
balls[0]
balls[1]
是同一个对象。@Canvas缺少太多信息。显示如何初始化
balls
a = {foo: 'bar'};
a.foo; // "bar"
b = a;
b.foo = null;
a.foo; // null