2

自己実行関数に渡される引数を変更できるようにしたいと考えています。

サンプルコードは次のとおりです。

var test = 'start';
(function (t) {t = 'end'} )(test);
alert(test) //alerts 'test'

そして、ここにフィドルがあります。変数testは変更されていません。参照渡しのように、どうすれば変更できますか?

4

4 に答える 4

10

を渡しますobject。これは参照渡しです:

var test = {
    message: 'start'
};
(function (t) {t.message = 'end'} )(test);
alert(test.message)

参考までに、参照渡しArrayもあります。

于 2013-04-04T22:19:56.883 に答える
3

JavaScript でそれを行うことはできません (まあ、まさにそれです)。ただし、次のようなことができます。

 var testBox = { test: "hello" };
 (function(tb) { tb.test = "goodbye"; })(testBox);
 alert(testBox.test); // "goodbye"

JavaScript には、関数呼び出しでの値渡しのみがあります。arguments変数 (オブジェクトとパラメーター)のようなものにエイリアスを設定する特殊な方法は 1 つしかありません。

とはいえ、オブジェクト プロパティは (通常) 変更可能であるため、値を変更する関数が必要な場合にオブジェクト参照を渡すことができます。

于 2013-04-04T22:20:09.080 に答える
0

テスト変数の値を引数として関数に渡しているだけです。引数の値を変更したら、テスト変数に割り当てる必要があります。

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);
于 2015-04-03T13:06:11.920 に答える