Знакомая всем конструкция оператора: 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