2012-05-04 43 views
1
var items = new Array("one", "two", "three"); 
var itemsRef = items; 
items.push("four"); 
console.debug(itemRef); 
console.debug(items); 

我真的不明白我的意思瞭如何通過上述itemsitemsRef相同甚至項目增加了「四個一」的時候itemsRef後參考itemsitemsRef應該只有(「一」「兩」「三」)是不是合理?引用變量在JavaScript

如果itemsRef永遠指着items永遠,爲什麼我們會使用這樣一個無用的參數,如items = itemsRef?我仍然不明白。任何人都可以告訴我這是如何工作的,爲什麼JavaScript讓變量永遠指向對方?

+0

你對代碼的作用是正確的,但至於爲什麼這個特定的代碼是這樣寫的,就我所知,這毫無意義。 – Wyzard

+0

我同意Wyzard。你通常不會看到這一點。你的目標是製作一個數組的副本嗎? – Marc

+0

Javascript數組通過引用進行分配:http://www.hunlock.com/blogs/Mastering_Javascript_Arrays – Chase

回答

4

的Javascript使得對象的分配,並通過引用代替陣列由值/複製。這就是你看到這種行爲的原因。有很多關於這方面的網頁文檔。

但是,如果你的目標是副本一個數組,這樣做:

var newArray = oldArray.slice(0); 
1

在這種情況下itemsRef不是在項目指向,而是在物體(陣列)項目參考指向。換句話說,items和itemRef指向同一個對象,而不是彼此。