高度な三項演算子アプリケーション

おなじみの演算子の構築:var a =(条件)? c:d; より効率的に使用することができます...

たとえば、条件によって機能を実行するには:
condition ? exec1() : exec2; または1つの機能: condition ? exec1() : null; condition ? exec1() : null; またはcondition ? exec1() : 0; condition ? exec1() : 0; &&演算子を使用して、さらに最適化できます。 例: condition && exec1();
そのような設計を使用することには1つの問題があります。1つの条件下で複数の機能を同時に実行することは不可能です。 オプションcondition ? exec1(); exec2(); : 0; condition ? exec1(); exec2(); : 0; 間違っています。
解決策は次のとおりです。
condition ?
(function() {
exec1();
exec2();
})()
:0;

2番目の解決策: condition ? exec1() && exec2() && exec3() : 0; condition ? exec1() && exec2() && exec3() : 0; はるかにコンパクトですが、残念ながら大きな欠点があります:実行可能関数の1つがfalseを返すと、インタープリターは次の実行を停止します。||演算子を使用すると、同じ問題が発生し、インタープリターは最初の真の結果で停止します。
解決策は、「ビット単位」演算子を使用するcondition ? exec1() | exec2() | exec3() : 0;condition ? exec1() | exec2() | exec3() : 0; condition ? exec1() | exec2() | exec3() : 0; またはcondition && ( exec1() | exec2() | exec3() );
彼らが言うように、便利でコンパクトに。

PS関数の区切り記号としてコンマを使用することもできます。
condition ? ( exec1() , exec2() , exec3() ) :0;

paulbakaus.comの資料に基づく


Source: https://habr.com/ru/post/J13388/


All Articles