可能性の重複:
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
出典:referanceによってパスと呼ばれるhttp://snook.ca/archives/javascript/javascript_pass
具体的な違いは、最初の例の 'x = 5'行が' x'の元のパラメータ値を破棄し、 '5'で置き換えることです。 2番目の例では、 'fnc'変数はこのように置き換えられないので、渡された元のオブジェクトは更新されます。 – Gareth
オブジェクトを関数に渡すと、そのオブジェクトへの参照として渡されます。プリミティブ値についても同様の効果を有することが 、次のような
var intVal = { val: 0 };
前にオブジェクトでそれらをラップするかもしれない、あなたは、関数に渡し、まだ実際の変数を変更することができますこの方法。
その。 – Iznogood
あなたは正確にすることはできません。すべてのオブジェクトは参照として渡されるため、渡されるオブジェクトは変更できますが、格納されているオブジェクトの場所は変更されません。 – zzzzBov