如何使用javascript在另一个具有可变参数的函数中传递函数?

如何使用javascript在另一个具有可变参数的函数中传递函数?,javascript,function,closures,pass-by-reference,Javascript,Function,Closures,Pass By Reference,我有一个预处理函数,这里是一个示例函数 function preprocess (msg, fct) { alert(msg); fct(???); } 我需要在preprocess函数中执行函数fct,但是fct的参数数量并不总是相同的。我不是javascript专家,但我认为有两种方法可以实现这一点: 使用对象显式调用 function preprocess (msg, fct, obj) { ... } 用法:preprocess('hello',myfct,{first

我有一个预处理函数,这里是一个示例函数

function preprocess (msg, fct) {
   alert(msg);
   fct(???);
}
我需要在
preprocess
函数中执行函数
fct
,但是
fct
的参数数量并不总是相同的。我不是javascript专家,但我认为有两种方法可以实现这一点:

  • 使用对象显式调用

    function preprocess (msg, fct, obj) { ... }
    
  • 用法:
    preprocess('hello',myfct,{firstparam:'foo',secondparam:'bar'})

  • 使用函数的参数内部属性


  • 不管怎么说,我可能有这个理论,但我无法编写上述两种情况的代码。这两种方法都能满足我的需要吗?如果是,您能提供每个参数的最小示例来告诉我方法吗?

    您可以在末尾以可变形式传递参数,并使用
    参数
    对象来获得所需的:

    function preprocess (msg, fct /*, ...as*/) {
      var as = [].slice.call(arguments, 2);
      alert(msg);
      fct.apply(this, as);
    }
    
    preprocess(msg, fct, a, b, c); // fct(a, b, c)