ES6 Тернарный оператор

Тернарный оператор (также известный как условный оператор) в JavaScript — это сокращённая форма записи оператора ветвления if...else. Он позволяет компактно выразить условие и присвоить результат вычислений в зависимости от результата проверки условия.

Формат тернарного оператора:


условие ? выражение_если_истина : выражение_если_ложь

Компактность и простота

Главное преимущество тернарного оператора заключается в лаконичности и простоте выражения простого ветвления. Вместо длинного блока if...else можно записать одно короткое выражение.

Вот пример с использованием конструкции if / else:

Пример

До:


if (authenticated) {
  renderApp();
} else {
  renderLogin();
}

Тот же самый пример с использованием тернарного оператора:

Пример

С тернарным оператором:


authenticated ? renderApp() : renderLogin();


Структура тернарного оператора

  1. Условие: Логическое выражение, проверяемое оператором.
  2. ?:: После условия ставится знак вопроса, далее идёт первое выражение (которое выполняется, если условие истинно).
  3. :: Затем двоеточие отделяет второе выражение (оно выполняется, если условие ложно).

Несколько примеров:


// Возврат абсолютного значения числа
const num = -5;
const absNum = num >= 0 ? num : -num;
console.log(absNum); // выведет 5

// Проверка возраста
const age = 17;
const canVote = age >= 18 ? true : false;
console.log(canVote); // выведет false


Тернарный оператор и множественное ветвление

Хотя тернарный оператор предназначен для двух возможных путей исполнения, его можно вложить, создавая цепочку проверок:

Пример


const grade = 85;
const result = grade > 90 ? "Отлично" :
              grade > 80 ? "Хорошо" :
              grade > 70 ? "Средне" :
                          "Нужно стараться!";
console.log(result); // выведет "Хорошо"


Советы по использованию

  • Используйте аккуратно: Будьте внимательны при вложенном применении тернарных операторов, чтобы сохранить читаемость кода.
  • Преимущественно короткие условия: Применяйте тернарный оператор для небольших выражений, где логика простая и очевидная.
  • Не заменяйте везде if..else: Если структура требует более сложного ветвления или обработки ошибок, предпочтительнее обычный блок if...else.