Javascript 正在将 var 设置为早期

Javascript is setting var to early

我从几天前开始学习 JavaScript 但现在我遇到了一个问题,我想在计算后始终将 var 设置为旧值,如下所示:

var Old = [0,0];
var New = [0,0];

test();

function test() {
  Old = New;
  New[0] = 0;
  New[1] = 5;

  alert(Old + " : " + New);

  do_some_calculation_stuff();
}

但我不明白为什么旧值和新值总是立即相同以及如何解决这个问题。

因为像这​​样分配数组意味着只分配引用。如果您想对 New 中的内容进行浅表复制,您需要执行以下操作:

Old = New.slice(0);

以上基本上是执行此操作的缩写形式:

Old = [];
for (var i = 0; i < New.length; ++i) {
    Old[i] = New[i]
}

当您将 New 分配给 Old 时,您实际上只是将其分配给数组的引用。那时,两个变量都指向完全相同的对象。如果您通过引用 New 修改数组,当通过 Old

访问时它也会显示为已更改