Spec-Zone.ru › JavaScript

Условный (тернарный) оператор

Базовый Широко доступен

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Условный (тернарный) оператор — единственный оператор JavaScript, который принимает три операнда: условие, за которым следует знак вопроса (?), затем выражение, которое будет выполнено, если условие истинно, за которым следует двоеточие (:), и, наконец, выражение, которое будет выполнено, если условие ложно. Этот оператор часто используется как альтернатива инструкции if...else.

Попробуйте

function getFee(isMember) {
  return isMember ? "$2.00" : "$10.00";
}

console.log(getFee(true));
// Expected output: "$2.00"

console.log(getFee(false));
// Expected output: "$10.00"

console.log(getFee(null));
// Expected output: "$10.00"

Синтаксис

condition ? exprIfTrue : exprIfFalse

Параметры

condition
Выражение, значение которого используется как условие.
exprIfTrue
Выражение, которое выполняется, если condition оценивается как истинное значение (равное или преобразуемое в true).
exprIfFalse
Выражение, которое выполняется, если condition ложно (то есть имеет значение, которое может быть преобразовано в false).

Описание

Помимо false, возможными ложными выражениями являются: null, NaN, 0, пустая строка ("") и undefined. Если condition является одним из них, результатом условного выражения будет результат выполнения выражения exprIfFalse.

Примеры

Основной пример

const age = 26;
const beverage = age >= 21 ? "Beer" : "Juice";
console.log(beverage); // "Beer"

Обработка нулевых значений

Одно из распространенных применений — обработка значения, которое может быть null:

const greeting = (person) => {
  const name = person ? person.name : "stranger";
  return `Howdy, ${name}`;
};

console.log(greeting({ name: "Alice" })); // "Howdy, Alice"
console.log(greeting(null)); // "Howdy, stranger"

Цепочки условий

Тернарный оператор является правоассоциативным, что означает, что его можно "цепочить" следующим образом, подобно цепочке if … else if … else if … else:

function example() {
  return condition1 ? value1
    : condition2 ? value2
    : condition3 ? value3
    : value4;
}

Это эквивалентно следующей цепочке if...else.

function example() {
  if (condition1) {
    return value1;
  } else if (condition2) {
    return value2;
  } else if (condition3) {
    return value3;
  } else {
    return value4;
  }
}

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-conditional-operator

Совместимость с браузерами

Настольные Мобильные Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
conditional
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

См. также

  • if...else
  • Оператор нулевого слияния (??)
  • Опциональная цепочка (?.)
  • Learn: Принятие решений в коде — условные конструкции
  • Руководство по выражениям и операторам

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_operator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API