如何使用 javascript 将一个函数传递给另一个带有可变参数的函数?

How to pass a function in another function with variadic arguments with javascript?

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

function preprocess (msg, fct) {
   alert(msg);
   fct(???);
}

我需要在preprocess函数中执行函数fct,但是fct并不总是有相同数量的参数。我不是 javascript 的专业人士,但我认为有两种方法可以实现:

  1. 使用对象显式调用

    function preprocess (msg, fct, obj) { ... }
    

用法 : preprocess ('hello', myfct, {firstparam: 'foo', secondparam: 'bar'});

  1. 使用函数的内部参数属性

无论如何我可能有理论,我无法对上述两种情况进行编码。是否可以使用这两种方式来实现我所需要的?如果是,您能否提供每个示例的最小示例以向我展示方法?

您可以在末尾以可变形式传递参数,并使用 arguments 对象来获取您需要的内容:

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)