可能重複:
JavaScript Pass Variables Through Reference功能(PARAM) - 像PHP
你怎麼能做到在JavaScript這樣的事情?
在PHP中,你可以把一個&
放在參數前面的函數中直接寫回變量..你怎麼能在javascript中做這樣的事情?
可能重複:
JavaScript Pass Variables Through Reference功能(PARAM) - 像PHP
你怎麼能做到在JavaScript這樣的事情?
在PHP中,你可以把一個&
放在參數前面的函數中直接寫回變量..你怎麼能在javascript中做這樣的事情?
在JavaScript中,值按值傳遞給函數。但是,對象通過引用傳遞。
傳遞值:
function myfunction(x)
{
// x is equal to 4
x = 5;
// x is now equal to 5
}
var x = 4;
alert(x); // x is equal to 4
myfunction(x);
alert(x); // x is still equal to 4
傳遞對象:
function myobject()
{
this.value = 5;
}
var o = new myobject();
alert(o.value); // o.value = 5
function objectchanger(fnc)
{
fnc.value = 6;
}
objectchanger(o);
alert(o.value); // o.value is now equal to 6
具體區別在於第一個例子中的'x = 5'行放棄了'x'的原始參數值並用'5'代替。在第二個例子中,'fnc'變量不會以這種方式被替換,所以傳入的原始對象將被更新。 – Gareth 2012-02-24 16:55:49
如果將一個對象傳遞給一個函數,它總是被視爲傳遞一個對它的引用。 要對原始值類似的效果,你可以將它們包裝在一個對象之前一樣
var intVal = { val: 0 };
這樣,你可以把它傳遞給函數,仍可以修改實際的變量。
其所謂路過全球化志願服務青年。 – Iznogood 2012-02-24 16:27:03
你不可能。所有對象都作爲引用傳遞,因此您可以修改要傳遞的對象,但不能修改它存儲的位置。 – zzzzBov 2012-02-24 16:27:31