由数组构成的变量作为指向数组的指针以及它们何时充当数组副本?在javascript中处理数组的副本
例如,如果我有一个数组名为Array1
a1=Array1;
是a1
复印件或指针数组。
如果我修改a1
它是否也会修改Array1
。通过修改我的意思是改变一个值,将某些东西推入数组,排序或者其他可以修改数组的方式。
谢谢,
由数组构成的变量作为指向数组的指针以及它们何时充当数组副本?在javascript中处理数组的副本
例如,如果我有一个数组名为Array1
a1=Array1;
是a1
复印件或指针数组。
如果我修改a1
它是否也会修改Array1
。通过修改我的意思是改变一个值,将某些东西推入数组,排序或者其他可以修改数组的方式。
谢谢,
变量赋值在JavaScript 从未使得副本为non-primitives(所有不是value)。
JavaScript中的变量持有对数组的引用。
如果将变量值与arr2 = arr1
复制,则将引用复制到同一个数组。因此,对arr2
的任何更改都将更改为arr1
。
如果想要另一个变量保存到一个副本的引用,这样你就可以改变第二阵列,而不改变第一个,使用slice:
var arr2 = arr1.slice();
我不记得为什么,但我认为你希望它是'arr1.slice(0)' – rodneyrehm 2013-03-15 21:56:58
你可能还想指出'.slice()'只创建一个* shallow *的数组副本。 – rodneyrehm 2013-03-15 21:58:16
'x = [1,2,3]; y = x; y [0] = 7; console.log(x)'会输出'7,2,3'。 JS中的数组是对象,当你通过'newobj = origobj'复制一个对象时,你只是创建一个引用。你需要克隆数组对象来创建一个真正独立的副本。 – 2013-03-15 21:56:33