Javascript将var设置为early

时间:2016-01-13 00:06:51

标签: javascript var

我正在学习,因为有些日子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();
}

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

2 个答案:

答案 0 :(得分:6)

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

Old = New.slice(0);

以上基本上是这样做的简短形式:

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

答案 1 :(得分:1)

New分配给Old时,实际上只是为其分配了对数组的引用。此时,两个变量都指向完全相同的Object。如果您通过引用New修改数组,则在通过Old

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