是否有替代此类代码的已知模式:
if(condition) {
$(el).on("event", function() {
doSomething();
});
}
else {
doSomething();
}
doSomething
总是相同的功能?
答案 0 :(得分:1)
把它包起来?
function doBindOrExecute(el, condition, func) {
if(condition) {
$(el).on("event", function() {
func();
});
}
else {
func();
}
}
doBindOrExecute(el, true, function() {
// Do stuff
});
答案 1 :(得分:1)
如果您正在寻找一个简短的解决方案,您可以尝试这样的事情。
$(el).on('event', condition ? doSomething : doSomething() && false);
使用Ternary Operator,如果condition
为evaluated as true,它会将'event'
绑定到函数doSomething
。否则它将调用doSomething
并始终使用值false,因此无论doSomething
的返回值是什么,都不会实际绑定任何内容。
答案 2 :(得分:0)
不是最好的可读性或维护,但可以做:
if(condition || doSomething()) {
$(el).on("event", function() {
doSomething();
});
}
只要doSomething()
没有返回真值。但把它包起来绝对是一种更好的方式。