下面是两个回调函数:
function callback_a(){
alert('a');
}
function callback_b(p){
alert('b says'+ p)'
}
如果我想使用callback_a
function test(callback){
if(condition){
callback();
}
}
test(callback_a);
但功能test
不适用于callback_b
,那么如何实现一个通用函数,可以传递一些带有多个可能的参数列表的回调函数。
有以下三种选择:
-
最简单的方法是使用扩展运算符:
function test(callback, ...callback_args) {
callback(...callback_args);
}
在这种情况下调用test
为了功能callback_b
会是这样的:
test(callback_b,"b")
-
第二种方法是使用arguments
其作用域为 JavaScript 中的任何函数:
function test(callback) {
callback.apply(null, arguments.slice(1));
}
的调用test
为了功能callback_b
会是一样的:
test(callback_b,"b")
-
另一种选择是使用部分应用的函数。在这种情况下你应该定义b_callback
像这样 (ES6
句法):
let callback_b = (p) => () => void{
alert('b says'+ p)'
}
或没有ES6
:
function callback_b(p) {
return function(){
alert('b says'+ p)'
}
}
并像这样调用它:
test(callback_b("b"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)