我正在学习,因为有些日子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值总是立即相同以及如何解决这个问题。
答案 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