在 Javascript 中传递命名函数
Passing a named function in Javascript
如何在不调用的情况下传递带参数的命名函数。
现在我唯一的解决方案似乎是一个 hack,但它是传递一个未命名的函数来调用命名函数。
callback(function(){foo(params);})
有更好的方法吗?
不,有几种方法可以做到这一点,但您拥有的方法是最受欢迎的。我知道这感觉很老套,但事实就是如此。
你也可以
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 方法文档 Here
您的函数应分配给作用域变量。您可以将其与该变量一起传递。
var func = function(){ foo(params); }
callback(func);
如果您只是想直接调用 foo,只需将其传入即可。
callback(foo);
如何在不调用的情况下传递带参数的命名函数。
现在我唯一的解决方案似乎是一个 hack,但它是传递一个未命名的函数来调用命名函数。
callback(function(){foo(params);})
有更好的方法吗?
不,有几种方法可以做到这一点,但您拥有的方法是最受欢迎的。我知道这感觉很老套,但事实就是如此。
你也可以
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 方法文档 Here
您的函数应分配给作用域变量。您可以将其与该变量一起传递。
var func = function(){ foo(params); }
callback(func);
如果您只是想直接调用 foo,只需将其传入即可。
callback(foo);