Что такое тернарный (условный) оператор в JavaScript?

Ответ

Тернарный оператор (? :) — это компактный синтаксис для записи условного выражения, возвращающего одно из двух значений в зависимости от условия. Он является единственным оператором в 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, а не любая хуйня.

Вот и вся магия, блядь. Используй с умом, а то потом сам же и будешь ебаться с этим кодом, как Герасим с Муму.