Тернарный оператор JavaScript как ярлык для операторов If/Else
Стивен Чепмен (Stephen Chapman) — старший разработчик Oracle PL/SQL в SEI Financial Services с более чем 20-летним опытом разработки программного обеспечения и консультирования.
Условный тернарный оператор в JavaScript присваивает значение переменной на основе некоторого условия и является единственным оператором JavaScript, который принимает три операнда.
Тернарный оператор заменяет если заявление, в котором оба если а также еще предложения присваивают разные значения одному и тому же полю, например:
если (условие)
результат = 'что-то';
еще
результат = 'что-то еще';
Тернарный оператор сокращает этот оператор if/else до одного оператора:
результат = (условие) ? «что-то»: «что-то еще»;
Если условие true, тернарный оператор возвращает значение первого выражения; в противном случае возвращается значение второго выражения. Рассмотрим его части:
- Сначала создайте переменную, которой вы хотите присвоить значение, в данном случае результат. Переменная результат будет иметь разное значение в зависимости от состояния.
- Обратите внимание, что в правой части (т.е. самого оператора) условие первый.
- условие всегда сопровождается знаком вопроса (?), что в основном можно прочитать как «было ли это правдой?»
- Два возможных результата идут последними, разделенные двоеточием (:).
Такое использование тернарного оператора доступно только тогда, когда исходный если оператор следует формату, показанному выше, но это довольно распространенный сценарий, и использование тернарного оператора может быть гораздо более эффективным.
Пример тернарного оператора
Давайте посмотрим на реальный пример.
Возможно, вам нужно определить, дети какого возраста подходят для посещения детского сада. У вас может быть такой условный оператор:
переменный возраст = 7;
вар детский сад_подходящий;
если (возраст > 5) детский сад_eligible = "Достаточно взрослый";
>
else детский сад_eligible = "Слишком молод";
>
Используя тернарный оператор, вы можете сократить выражение до:
Этот пример, конечно же, вернет «Достаточно старый».
Множественные оценки
Вы также можете включить несколько оценок:
var age = 7, var socially_ready = true;
var garden_eligible = (возраст < 5) ? «Слишком молод» : socially_ready
«Достаточно взрослый, но еще не готовый» «Достаточно взрослый и социально зрелый»
console.log (детский сад_подходящий); // регистрирует "Достаточно старый и социально зрелый"
Несколько операций
Тернарный оператор также позволяет включать несколько операций для каждого выражения, разделенных запятой:
var age = 7, socially_ready = true;
возраст > 5 ? (
Сообщить("Вы достаточно взрослый."),
location.assign("continue.html")
) : (
социально_готово = ложь,
alert("Извините, но вы еще не готовы.")
);
Последствия тернарного оператора
Тернарные операторы избегают многословного кода, поэтому, с одной стороны, они кажутся желательными. С другой стороны, они могут поставить под угрозу читабельность — очевидно, что «IF ELSE» легче понять, чем загадочное «?».
При использовании тернарного оператора или любой аббревиатуры учитывайте, кто будет читать ваш код. Если менее опытным разработчикам может понадобиться понять логику вашей программы, возможно, следует избегать использования тернарного оператора.Это особенно верно, если ваше условие и оценки настолько сложны, что вам нужно будет вложить или связать свой тернарный оператор. На самом деле такие вложенные операторы могут влиять не только на удобство чтения, но и на отладку.
Как и при любом программном решении, обязательно учитывайте контекст и удобство использования, прежде чем использовать тернарный оператор.