Тернарный оператор
Тернарный оператор
Тернарный оператор — единственный оператор JavaScript с тремя операндами. Краткая запись if/else для выражений.
Синтаксис
условие ? значение_если_true : значение_если_false
const age = 20;
const status = age >= 18 ? 'взрослый' : 'несовершеннолетний';
// Эквивалентно:
// let status;
// if (age >= 18) { status = 'взрослый'; } else { status = 'несовершеннолетний'; }
console.log(status); // 'взрослый'
Тернарный оператор — выражение, не оператор
В отличие от if, тернарный оператор — это выражение (возвращает значение). Это делает его удобным в:
// В присваивании
const label = isLoggedIn ? 'Выйти' : 'Войти';
// В шаблонных литералах
console.log(`Привет, ${user ? user.name : 'Гость'}!`);
// В JSX/Vue шаблонах
// <div>{{ isLoading ? 'Загрузка...' : data.title }}</div>
// В аргументах функции
renderButton({ text: isPremium ? 'Premium' : 'Бесплатный' });
Когда использовать, когда нет
Используйте тернарный оператор когда:
- Выбор между двумя значениями, логика проста
- Результат используется в выражении (шаблон, аргумент)
- Условие и оба варианта помещаются в одну строку
Не используйте когда:
- Нужно выполнить несколько операций (не просто выбрать значение)
- Вложенные тернарные операторы — это нечитаемо
// Плохо — вложенный тернарный
const grade = score >= 90 ? 'A' : score >= 80 ? 'B' : score >= 70 ? 'C' : 'F';
// Хорошо — if/else или lookup table
function getGrade(score) {
if (score >= 90) return 'A';
if (score >= 80) return 'B';
if (score >= 70) return 'C';
return 'F';
}
Правило большого пальца: если тернарное выражение не помещается в одну строку — используйте
if/else. Читаемость важнее краткости.При вложении тернарных операторов они выполняются справа налево:
// Это:
a ? b : c ? d : e
// Эквивалентно:
a ? b : (c ? d : e)
Именно поэтому вложенные тернарные операторы так сложно читать. Форматтеры (Prettier) запрещают их или форматируют очень агрессивно.