我想调用callback
函数(如果用户提供了一个函数),或默认为默认defaultCallback
函数。
我按照以下方式完成了这项工作:
function defaultCallback(x) {
console.log('default callback ' + x)
}
function test(callback) {
let x = 'x'
if (callback) {
callback(x)
} else {
defaultCallback(x)
}
}
我觉得应该有更简洁的方法来做到这一点?
答案 0 :(得分:2)
你可以使用||运算符以获取回调或回退到defaultCallback。
function test(callback) {
(callback || defaultCallback)('x')
}
以下是可用于在控制台中查看结果的测试代码段。
function defaultCallback(x) { console.log('Used default ' + x); }
function test(callback) {
(callback || defaultCallback)('x')
}
test(undefined);
test((y) => console.log('Used func ' + y));

答案 1 :(得分:1)
我认为您正在寻找conditional operator:
function test(callback) {
let x = 'x'
(typeof callback == "function" ? callback : defaultCallback)(x);
}
或者,如果您不想检查参数的类型,但只是断言它不是undefined
,那么您可以使用default initialiser参数:
function test(callback = defaultCallback) {
let x = 'x'
callback(x);
}
答案 2 :(得分:-1)
怎么样:
function test(callback) {
let x = 'x'
callback ? callback(x) : defaultCallBack(x);
}