如何在不调用的情况下传递带参数的命名函数。
现在,我唯一的解决方案似乎是一个 hack,但它是传递一个将调用命名函数的未命名函数。
callback(function(){foo(params);})
有没有更好的方法来做到这一点?
如何在不调用的情况下传递带参数的命名函数。
现在,我唯一的解决方案似乎是一个 hack,但它是传递一个将调用命名函数的未命名函数。
callback(function(){foo(params);})
有没有更好的方法来做到这一点?
不,有几种方法可以做到这一点,但你拥有它的方式是最受欢迎的。我知道这感觉很hacky,但就是这样。
你也可以做
callback(foo.bind(this, params));
您现在拥有的将调用包装在另一个匿名函数中的代码非常好,并且是 Javascript 中广泛使用的模式。
如果你想删除匿名函数,你可以使用对函数的引用和bind()
方法。尝试这个:
callback(foo.bind(this, params));
您也可以只传递函数并使用 Javascript apply
/call
函数
callback(myFunc);
其中回调定义为:
function callback(func, params) {
func.apply(null, params);
}
有关更多详细信息,您可以在此处进入 MDN 中的 Apply 方法文档
您的函数应分配给范围变量。您可以使用该变量传递它。
var func = function(){ foo(params); }
callback(func);
如果您只是想直接调用 foo,只需将其传入即可。
callback(foo);