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 回答