Как стать автором
Обновить

Расширенное применение тернарного оператора

Время на прочтение1 мин
Количество просмотров9.1K
Знакомая всем конструкция оператора: var a = (condition)? c: d; может быть использована более эффективно…

Например выполнять функции по условию:
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
Теги:
Хабы:
Всего голосов 12: ↑7 и ↓5+2
Комментарии89

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн