2012-02-24 13 views
0

可能性の重複:
JavaScript Pass Variables Through Reference機能(&PARAM) - のようなPHPで

どのようにJavaScriptでこのような何かを行うことができますか?

PHPでは、パラメータの前にある関数に&を置くことで、直接変数に書き戻すことができます。javascriptでこれをどうやって行うことができますか?

+1

その。 – Iznogood

+0

あなたは正確にすることはできません。すべてのオブジェクトは参照として渡されるため、渡されるオブジェクトは変更できますが、格納されているオブジェクトの場所は変更されません。 – zzzzBov

答えて

2

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 

出典:referanceによってパスと呼ばれるhttp://snook.ca/archives/javascript/javascript_pass

+1

具体的な違いは、最初の例の 'x = 5'行が' x'の元のパラメータ値を破棄し、 '5'で置き換えることです。 2番目の例では、 'fnc'変数はこのように置き換えられないので、渡された元のオブジェクトは更新されます。 – Gareth

0

オブジェクトを関数に渡すと、そのオブジェクトへの参照として渡されます。プリミティブ値についても同様の効果を有することが 、次のような

var intVal = { val: 0 }; 

前にオブジェクトでそれらをラップするかもしれない、あなたは、関数に渡し、まだ実際の変数を変更することができますこの方法。

関連する問題