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

Тернарный оператор ? : — это краткая форма if else, используемая для присваивания значения в зависимости от условия.

Синтаксис:

условие ? выражение1 : выражение2

Если условие истинно — возвращается выражение1, иначе — выражение2.

Пример: установка текста кнопки

const isLoggedIn = true;
const buttonText = isLoggedIn ? "Выйти" : "Войти";
button.textContent = buttonText;

Здесь вместо:

let buttonText;
if (isLoggedIn) {
  buttonText = "Выйти";
} else {
  buttonText = "Войти";
}

Мы пишем одну строку — чище, короче, удобнее для присваивания.

Пример: выбор изображения профиля

const hasAvatar = user.avatarUrl !== null;
const avatarSrc = hasAvatar ? user.avatarUrl : "/images/default-avatar.png";
avatarImage.src = avatarSrc;

Пример: форматирование данных

const count = 5;
const message = count === 1 ? "1 новое сообщение" : `${count} новых сообщений`;
notification.textContent = message;

Преимущества

  • Краткость: идеален для простых условий, особенно при присваивании.
  • Читаемость в простых случаях: сразу видно, что значение зависит от условия.
  • Удобен в шаблонах, функциях, JSX (в React), где нельзя использовать блоки if.

Ограничения

  • Не подходит для сложной логики. Например:
// ПЛОХО — не читаемо и сложно отлаживать
const result = condition1 ? (condition2 ? (condition3 ? "A" : "B") : "C") : (condition4 ? "D" : "E");

Такой код трудно понять и поддерживать. Лучше использовать if else.

  • Нельзя выполнять несколько действий внутри тернарного оператора:
// НЕ РАБОТАЕТ так, как ожидается
isLoggedIn ? console.log("Вход выполнен"), openDashboard() : redirectToLogin();

Здесь console.log и openDashboard() не будут выполнены как блок. Для нескольких действий используйте if.

Когда использовать

✅ Используйте тернарный оператор, когда:

  • Вы присваиваете значение переменной.
  • Условие простое — одно сравнение, один оператор.
  • Код должен быть компактным и понятным.

❌ Не используйте, когда:

  • Нужно выполнить несколько действий.
  • Условие сложное (с логическими операторами &&, ||, несколькими вложенными).
  • Вы хотите повысить читаемость для команды — лучше if else.

Тернарный оператор — инструмент для простых решений. Не превращайте его в замену if else.