如何重写函数

How to Re-write function

本文关键字:函数 重写 何重写      更新时间:2023-09-26

我在几个月前的一次面试中看到过这个问题,但我想确认一下我的答案。

(我正在写一篇关于过去面试问题的博文来澄清我的答案。)

if (foo) { bar.doSomething(el); }
else { bar.doSomethingElse(el); }

答:

foo ? bar.doSomething(el) : bar.doSomethingElse(el);

你也可以这样写(稍微不太好读):

(foo ? bar.doSomething : bar.doSomethingElse)(el);

甚至是病理的,虽然较短:

bar[foo ? 'doSomething' : 'doSomethingElse'](el);

可以进一步压缩(在您的示例中)为:

bar['doSomething' + (foo ? '' : 'Else')](el);

如果你真的想摆脱条件句,你可以做一些狡猾的事情,比如:

bar[['doSomething', 'doSomethingElse'][+!!foo]](el);