我有几个带可选回调的函数:
let myFunc = (callback) => {
callback = callback || (() => {});
// do something...
callback();
}
编写回调默认参数的最佳方法是什么?
以下解决方案都不能让我满意:
if (typeof callback === 'function') {
callback();
}
根本不紧凑!
let safeFunc = (callback) => {
return callback || (() => {});
};
let myFunc = (callback) => {
// do something...
safeFunc(callback)();
}
但问题是在this
之间发生了变化,在我的情况下这很重要。
call
let myFunc = (callback) => {
// do something...
safeFunc(callback).call(this);
}
用户不太友好。
const ID = () => {};
let myFunc = (callback=ID) => {
// do something...
callback();
}
有外部依赖,不是很有用,虽然可能是最好的选择。
答案 0 :(得分:1)
这是另一种选择。
if (callback) callback();
如果你想阻止两次调用回调,这里的另一个实用函数我称之为callIt,它也处理传递参数,如果this
对于防止使用bind也很重要,只需传递{{1} } ..
this
答案 1 :(得分:0)
直接调用Function()
构造函数看起来很有意义:
let myFunc = (callback = Function()) => {
// do something...
callback();
}
调用Function()
会返回一个noop函数:
let noopFunc = Function()
noopFunc() // => undefined
答案 2 :(得分:-3)
// ES6方式:(默认参数)
function(callback=()=>{}) {
if(typeof callback === 'function') {
callback();
}
}