Знакомая всем конструкция оператора: var a = (condition)? c: d; может быть использована более эффективно…
Например выполнять функции по условию:
Есть одна проблема в использовании такой конструкции: невозможность исполнения нескольких функций одновременно по одному из условий, т.е. вариант
Решение может быть таким:
Второе решение:
Выход есть в применении «bitwise» оператора:
Как говорится вуаля и удобно и компактно.
P.S. Возможно также применение запятой, как разделителя функций:
По материалам paulbakaus.com
Например выполнять функции по условию:
condition ? exec1() : exec2;
или только одну функцию: condition ? exec1() : null;
или condition ? exec1() : 0;
Можно еще больше оптимизировать применив оператор &&. Пример: condition && exec1();
Есть одна проблема в использовании такой конструкции: невозможность исполнения нескольких функций одновременно по одному из условий, т.е. вариант
condition ? exec1(); exec2(); : 0;
неверен.Решение может быть таким:
condition ?
(function() {
exec1();
exec2();
})()
:0;
Второе решение:
condition ? exec1() && exec2() && exec3() : 0;
намного компактнее, но увы у него есть крупный недостаток: если одна из выполняемых функций возвратит false интерпретатор остановит выполнение следующих, такая же проблема возникнет если использовать оператор ||, интерпретатор будет останавливаться при первом же true-результате.Выход есть в применении «bitwise» оператора:
condition ? exec1() | exec2() | exec3() : 0;
или condition && ( exec1() | exec2() | exec3() );
Как говорится вуаля и удобно и компактно.
P.S. Возможно также применение запятой, как разделителя функций:
condition ? ( exec1() , exec2() , exec3() ) :0;
По материалам paulbakaus.com