3

任意の数の引数を取ることができる関数を定義しましたが、必須ではありません。

function MyFunction() { //can take 0, 1, 1000, 10000, n arguments
//function code
}

ここで、毎回可変数の引数で MyFunction を呼び出す別の関数を作成したいと思います。

function Caller(n) {
var simple_var = "abc";
MyFunction() //how can i pass simple_var to MyFunction n times?
} 

前もって感謝します :)

4

2 に答える 2

8

Function.apply配列内の各要素が個別の引数として渡されたかのように、引数の配列を関数に渡すために使用できます。

function Caller(n) {
   var simple_var = "abc";

   // create an array with "n" copies of the var
   var args = [];
   for (var i = 0; i < n; ++i) {
      args.push(simple_var);
   }

   // use Function.apply to send that array to "MyFunction"
   MyFunction.apply(this, args);
}

言うまでもなく、 webkitでは引数の長さは 65536 に制限されています。

于 2012-04-27T10:54:36.327 に答える
-3

eval を使用できます (eval は悪です)。

for ループ コンストラクト文字列:

var myCall = "Myfunction(abc, abc, abc)";

そしてそれをevalに渡します

function Caller(n) {
var simple_var = "abc";
  eval(myCall);
} 
于 2012-04-27T11:02:08.597 に答える