【发布时间】:2012-08-30 07:14:44
【问题描述】:
我编写了一个函数,它有 3 个参数,其中一个是回调函数。 如何使回调成为可选参数,而无需在没有回调参数的情况下编写另一个函数?
function myFunction(arg1, arg2, callback){
// do something
// callback() if it has been passed
}
【问题讨论】:
标签: javascript
我编写了一个函数,它有 3 个参数,其中一个是回调函数。 如何使回调成为可选参数,而无需在没有回调参数的情况下编写另一个函数?
function myFunction(arg1, arg2, callback){
// do something
// callback() if it has been passed
}
【问题讨论】:
标签: javascript
确保回调是一个函数,然后调用它。
function myFunction(arg1, arg2, callback){
// do something
typeof callback == "function" && callback();
}
如果您想对调用它进行更多控制,请使用call()、apply()、bind()(无论哪种方式都能实现您的目标)。
【讨论】:
say('hello') 和 say('hello', callback) 都可以工作。我仍然希望say('hello', 'world') 出错。否则我永远不会知道这不是函数所期望的。 if (cb) cb(); 更简单并且在回调类型错误时提供错误。如果您提供自己的自定义错误,typeof 会更有用,在您的情况下,您不是。
简单,在调用之前检查是否定义了回调。
function myFunction(arg1, arg2, callback){
// do something
if (callback) {
callback();
}
}
【讨论】:
[[Call]]的对象会出错。