Ответ
Тернарный оператор (? :) — это компактный синтаксис для записи условного выражения, возвращающего одно из двух значений в зависимости от условия. Он является единственным оператором в JavaScript, принимающим три операнда.
Синтаксис:
условие ? значение_если_истина : значение_если_ложь
Примеры использования:
// Базовый пример
const age = 20;
const status = age >= 18 ? 'Взрослый' : 'Ребёнок';
console.log(status); // 'Взрослый'
// Возврат разных выражений
const score = 85;
const result = score > 90 ? 'Отлично' : score > 70 ? 'Хорошо' : 'Нужно улучшить';
console.log(result); // 'Хорошо'
// Использование в присваивании и возврате из функции
function getFee(isMember) {
return isMember ? '$2.00' : '$10.00';
}
console.log(getFee(true)); // '$2.00'
Когда использовать и когда избегать: ✅ Используйте для:
- Простых условий с короткими выражениями
- Условного присваивания значений переменным
- Внутри JSX (React) для условного рендеринга
❌ Избегайте для:
- Сложных вложенных условий (ухудшает читаемость)
- Замены многострочных операторов
if-elseс побочными эффектами - Условий, где важнее ясность кода, чем краткость
Альтернатива для простых случаев — логический оператор ИЛИ (||) или оператор нулевого слияния (??):
const name = userInput || 'Гость'; // Если userInput ложное, вернет 'Гость'
const value = someValue ?? 'default'; // Если someValue null/undefined Ответ 18+ 🔞
Да ты посмотри на эту штуку, тернарный оператор, ёпта! Выглядит как какой-то инопланетный иероглиф — ? :. А по сути, это просто короткий способ сказать «если что-то правда — вот это, а если пиздёж — вот то». Единственный такой извращенец на три операнда во всём JavaScript, блядь.
Как это выглядит, сука:
условие ? значение_если_истина : значение_если_ложь
Ну, смотри, как это работает, на примерах, блядь:
// Самый простой случай, чтоб мозг не ебал
const age = 20;
const status = age >= 18 ? 'Взрослый' : 'Ребёнок';
console.log(status); // 'Взрослый' — ну, логично же, блядь!
// А вот тут уже можно и запудрить мозги, если вкладывать один в другой
const score = 85;
const result = score > 90 ? 'Отлично' : score > 70 ? 'Хорошо' : 'Нужно улучшить';
console.log(result); // 'Хорошо' — вроде и работает, но читать уже пиздец неудобно, честно.
// Или вот, в функции его можно впендюрить
function getFee(isMember) {
return isMember ? '$2.00' : '$10.00';
}
console.log(getFee(true)); // '$2.00' — ну, членство же, блядь, выгодно!
А теперь слушай сюда, когда его юзать, а когда — нахуй посылать:
✅ Вот когда он в кайф, как тёплый пирожок:
- Для элементарных проверок, где всё ясно как божий день.
- Чтобы присвоить переменной одно из двух значений, не разводя километровый
if. - Внутри JSX в React'е — там он прям родной, блядь, для условного показа штук.
❌ А вот тут, блядь, выходи, закрой дверь с той стороны и не возвращайся:
- Если начинаешь вкладывать тернарник в тернарник, чтобы получилась ёбаная матрёшка. Читаемость падает ниже плинтуса, все ненавидят.
- Когда тебе нужно не просто значение вернуть, а целую процедуру с побочными эффектами выполнить. Для этого есть нормальные
if-else, ебать их в сраку. - Если краткость кода делает его загадкой для всех, включая тебя самого через неделю. Ясность, блядь, важнее!
Кстати, для совсем простых случаев есть другие хитрожопые штуки:
const name = userInput || 'Гость'; // Если userInput — ложь или пустота, будет 'Гость'. Проще пареной репы.
const value = someValue ?? 'default'; // А этот нулевой кореш (??) сработает только если слева null или undefined, а не любая хуйня.
Вот и вся магия, блядь. Используй с умом, а то потом сам же и будешь ебаться с этим кодом, как Герасим с Муму.