Javascript 如果条件为true,则绑定事件,否则立即执行

Javascript 如果条件为true,则绑定事件,否则立即执行,javascript,Javascript,是否有一种已知的模式来替换此类代码: if(condition) { $(el).on("event", function() { doSomething(); }); } else { doSomething(); } 哪里doSomething总是同一个功能?把它包装起来 function doBindOrExecute(el, condition, func) { if(condition) { $(el).on("event", f

是否有一种已知的模式来替换此类代码:

if(condition) {
    $(el).on("event", function() {
        doSomething();
    });
}
else {
   doSomething();
}
哪里
doSomething
总是同一个功能?

把它包装起来

function doBindOrExecute(el, condition, func) {
  if(condition) {
      $(el).on("event", function() {
          func();
      });
  }
  else {
     func();
  }
}

doBindOrExecute(el, true, function() {
  // Do stuff
});

不是可读性或维护的最佳选择,但您可以做到:

if(condition || doSomething()) {
    $(el).on("event", function() {
        doSomething();
    });
}

只要
doSomething()
不返回真实值。但是把它包装起来肯定是一个更好的方法。

如果你想寻找一个简短的复杂解决方案,你可以试试这样的方法

$(el).on('event', condition ? doSomething : doSomething() && false);

使用,如果
条件
为,它将
事件
绑定到函数
doSomething
。否则它将调用
doSomething
并始终使用值false,因此无论
doSomething
的返回值如何,实际上都不会绑定任何内容?谢谢:)
| | void doSomething()
将否定任何真实性返回;)