2014-05-02 12 views
0

如何通過JavaScript函數中的引用傳遞?如何在javascript中通過引用傳遞

例如:

function passByReference(a){ 
    a = "banana"; 
} 

var x = "apple"; 
passByReference(x); 

這裏X應該輸出banana

我是JavaScript新手;任何幫助,將不勝感激。提前致謝。

回答

0

您不能通過引用傳遞。如果你想從被調用的函數修改您的來電者的狀態,有兩種方法可以做到:

有時候,最適合包裝在一個對象的狀態:

var x = { valueToChange: 'initialValue' }; 
passByReference(x); 

這工作,因爲通過對象,傳遞一個指向對象所在地址的指針。該指針是按值傳遞的,但它仍指向同一個對象。

在其他一些情況下回調的伎倆:

var x = "apple"; 

passByReference(function (newValue) { x = newValue; }); 

function passByReference(callback) { 
    callback("banana"); 
} 

這工作,因爲如果你定義一個函數如上它與它引用的所有變量構建了一個封閉一起。當你的函數被調用時,它確實會修改x的值。

2

用對象包裝變量。對象的屬性通過引用傳遞。

function passByReference(a) { 
    a.fruit = 'banana'; 
} 

var wrapper = {fruit: 'apple'}; 
passByReference(wrapper); 
+1

不完全。對象也通過值傳遞。但是這些屬性本身就是引用。例如:這是行不通的'a = {fruit:'banana'}' – Zhonk

+0

yeah @zhonk你是對的屬性是引用本身,對象也是通過值傳遞的。 – azero0