可能重复:
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