由數組構成的變量作爲指向數組的指針以及它們何時充當數組副本?在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