在 Javascript 中传递命名函数

Passing a named function in Javascript

如何在不调用的情况下传递带参数的命名函数。

现在我唯一的解决方案似乎是一个 hack,但它是传递一个未命名的函数来调用命名函数。

callback(function(){foo(params);})

有更好的方法吗?

不,有几种方法可以做到这一点,但您拥有的方法是最受欢迎的。我知道这感觉很老套,但事实就是如此。

你也可以

callback(foo.bind(this, params));

您现在拥有的将调用包装在另一个匿名函数中的代码非常好,并且是 Javascript 中广泛使用的模式。

如果您希望删除匿名函数,您可以通过 bind() 方法使用对该函数的引用。试试这个:

callback(foo.bind(this, params));

bind() documentation

您也可以只传递函数并使用 Javascript apply/call 函数

callback(myFunc);

其中回调定义为:

function callback(func, params) {
    func.apply(null, params);
}

有关更多详细信息,请参阅 MDN 中的 Apply 方法文档 Here

您的函数应分配给作用域变量。您可以将其与该变量一起传递。

var func = function(){ foo(params); }
callback(func);

如果您只是想直接调用 foo,只需将其传入即可。

callback(foo);