我希望能够修改传递给自执行函数的参数。修改自我执行函数中的参数
下面是一些示例代码:
var test = 'start';
(function (t) {t = 'end'})(test);
alert(test) //alerts 'test'
而且here is a fiddle。变量test
尚未更改。我如何改变它,如通过引用?
我希望能够修改传递给自执行函数的参数。修改自我执行函数中的参数
下面是一些示例代码:
var test = 'start';
(function (t) {t = 'end'})(test);
alert(test) //alerts 'test'
而且here is a fiddle。变量test
尚未更改。我如何改变它,如通过引用?
通行证在object
,它是通按引用:
var test = {
message: 'start'
};
(function (t) {t.message = 'end'})(test);
alert(test.message)
FYI,Array
也是通按引用。
你不能在JavaScript中那么做(好吧,就是)。然而,您可以这样做:
var testBox = { test: "hello" };
(function(tb) { tb.test = "goodbye"; })(testBox);
alert(testBox.test); // "goodbye"
JavaScript只在函数调用中传递值;只有一种特殊的方法可以给变量(arguments
对象和参数)一个别名,并且它很奇怪,没有兴趣。也就是说,对象属性(通常)是可变的,因此在需要修改值的函数的情况下,可以传递对象引用。
你不能这样做。
您可以做的最好做法是传入一个对象,然后更新该对象。
var test = { state: 'start' };
(function (t) {t.state = 'end'})(test);
alert(test.state); // 'end'
您只是将测试变量的值作为参数传递给该函数。更改参数值后,您需要将其分配回测试变量。
var test = 'start';
(function (t){t = 'end'; test = t;})(test);
alert(test) //alerts 'test'
或者
var myObject = {test: "start"};
var myFunc = function (theObject){
theObject.test = 'end';
}(myObject);
alert(myObject.test);
这是鸡蛋里挑骨头,但对象和数组不传递按引用;对象的引用是按值传递的。这似乎是一种无意义的区别,实际上它是,但“通过引用传递”是指在编程语言设计中非常具体的东西。 – Pointy 2013-04-04 22:20:58
谢谢,这正是我所需要的! (可以在11分钟内收到) – Doorknob 2013-04-04 22:21:15
@积分同意。 – sweetamylase 2013-04-04 22:24:03