我需要複製和操作數組變量,但由於某種原因,當我將值推入新創建的數組時,它將數值推送到原始數組中。重複數組
function testing (point) {
var newArray = currentChain;
newArray.push(point);
}
在這種情況下,點將被添加到currentChain
變量。 請注意,我無處設置currentChain
等於newArray
,腳本中沒有其他變量名爲newArray
。爲什麼會這樣呢?
我需要複製和操作數組變量,但由於某種原因,當我將值推入新創建的數組時,它將數值推送到原始數組中。重複數組
function testing (point) {
var newArray = currentChain;
newArray.push(point);
}
在這種情況下,點將被添加到currentChain
變量。 請注意,我無處設置currentChain
等於newArray
,腳本中沒有其他變量名爲newArray
。爲什麼會這樣呢?
要解決此問題,您需要克隆您的陣列。例如,通過使用slice
方法:
var newArray = currentChain.slice();
這是因爲你的newArray
是指向currentChain
陣列。
謝謝!這工作。我沒有意識到這些使用的指針。 – CountingStacks 2014-10-10 16:38:41
因爲newArray
和currentChain
共享相同的參考,所以更改一個也影響另一個。
使用newArray = []
來避免這種情況,因爲您的數組命名是這樣的。
「請注意,我沒有設置currentChain等於newArray」;-) – 2014-10-10 16:22:39
@NickRussler lol – 2014-10-10 16:23:12
Javascript(如Java和許多其他語言)使用[call-by-sharing](http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing)作爲對象,所以'newArray'和'currentChain'指向相同的數組對象 – Christoph 2014-10-10 16:44:44