Тернарный оператор
Тернарный оператор ? : — это краткая форма 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.