Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.
Условный (тернарный) оператор - единственный оператор в JavaScript, принимающий три операнда. Он часто используется в качестве укороченного варианта условного оператора if
.
Синтаксис
условие ? выражение1 : выражение2
Параметры
условие
- Выражение, принимающее значение
true
илиfalse
.
выражение1
,выражение2
- Выражения, значения которых могут принадлежать любому типу.
Описание
Оператор возвращает значение выражения1
, если условие
верно, и значение выражения2
в противном случае. Например, чтобы вывести сообщение, текст которого зависит от значения переменной isMember
, можно использовать такое выражение:
"The fee is " + (isMember ? "$2.00" : "$10.00")
Также с помощью тернарного оператора можно присваивать значения переменным:
var elvisLives = Math.PI > 4 ? "Да" : "Нет";
Возможны множественные тернарные операции (обратите внимание: условный оператор ассоциативен справа):
var firstCheck = false, secondCheck = false, access = firstCheck ? "Доступ запрещен" : secondCheck ? "Доступ запрещен" : "Доступ разрешен"; console.log( access ); // выводит в консоль "Доступ разрешен"
Тернарные операции можно использовать и сами по себе - для выполнения различных операций:
var stop = false, age = 16; age > 18 ? location.assign("continue.html") : stop = true;
You can also do more than one single operation per case, separating them with a comma:
var stop = false, age = 23; age > 18 ? ( alert("OK, you can go."), location.assign("continue.html") ) : ( stop = true, alert("Sorry, you are much too young!") );
При присвоении значения также возможно выполнение более одной операции. В этом случае переменной будет присвоено то значение, которое стоит последним в списке значений, разделенных запятой.
var age = 16; var url = age > 18 ? ( alert("OK, you can go."), // alert returns "undefined", but it will be ignored because // isn't the last comma-separated value of the parenthesis "continue.html" // the value to be assigned if age > 18 ) : ( alert("You are much too young!"), alert("Sorry :-("), // etc. etc. "stop.html" // the value to be assigned if !(age > 18) ); location.assign(url); // "stop.html"
Спецификации
Спецификация | Статус | Комментарий |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Условный Оператор' в этой спецификации. |
Стандарт | |
ECMAScript 5.1 (ECMA-262) Определение 'Условный оператор' в этой спецификации. |
Стандарт | |
ECMAScript 1st Edition (ECMA-262) Определение 'Условный оператор' в этой спецификации. |
Стандарт | Изначальное определение. Реализация в JavaScript 1.0. |
Поддержка браузерами
Особенность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Особенность | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базоая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |