(我正在写一篇关于过去面试问题的博文,以澄清我的答案。)
if (foo) { bar.doSomething(el); }
else { bar.doSomethingElse(el); }
答案:
foo ? bar.doSomething(el) : bar.doSomethingElse(el);
答案 0 :(得分:2)
您也可以这样写(稍微不那么可读):
(foo ? bar.doSomething : bar.doSomethingElse)(el);
甚至病态,但更短:
bar[foo ? 'doSomething' : 'doSomethingElse'](el);
可以进一步压缩(在您的示例中为):
bar['doSomething' + (foo ? '' : 'Else')](el);
如果你真的想摆脱条件,你可以做一些鬼鬼祟祟的事情:
bar[['doSomething', 'doSomethingElse'][+!!foo]](el);