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

おなじみの演算子の構築: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の資料に基づく



All Articles