From c058fa0fb22dc40ef0225b21a97578cddd0aaffa Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:51:05 +0100 Subject: unslug ru: move --- .../operators/conditional_operator/index.html | 169 +++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 files/ru/web/javascript/reference/operators/conditional_operator/index.html (limited to 'files/ru/web/javascript/reference/operators/conditional_operator') diff --git a/files/ru/web/javascript/reference/operators/conditional_operator/index.html b/files/ru/web/javascript/reference/operators/conditional_operator/index.html new file mode 100644 index 0000000000..344d7f21d9 --- /dev/null +++ b/files/ru/web/javascript/reference/operators/conditional_operator/index.html @@ -0,0 +1,169 @@ +--- +title: Условный (тернарный) оператор +slug: Web/JavaScript/Reference/Operators/Условный_оператор +tags: + - JavaScript + - Оператор +translation_of: Web/JavaScript/Reference/Operators/Conditional_Operator +--- +
{{jsSidebar("Operators")}}
+ +

Условный (тернарный) оператор - единственный оператор в 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;
+
+ +

Также возможно выполнять несколько операций на каждое сравнение, разделив их запятыми:

+ +
var stop = false, age = 23;
+
+age > 18 ? (
+    alert("Хорошо, вы можете продолжить."),
+    location.assign("continue.html")
+) : (
+    stop = true,
+    alert("Простите, вы еще так юны!")
+);
+
+ +

При присвоении значения также возможно выполнение более одной операции. В этом случае переменной будет присвоено то значение, которое стоит последним в списке значений, разделенных запятой.

+ +
var age = 16;
+
+var url = age > 18 ? (
+    alert("Хорошо, вы можете продолжить."),
+    // alert вернет "undefined", но это будет проигнорировано, потому что
+    // не является последним в списке значений, разделенных запятой
+    "continue.html" // значение будет присвоено, если age > 18
+) : (
+    alert("Вы слишком молоды!"),
+    alert("Простите :-("),
+    // ит.д. ит.д.
+    "stop.html" // значение будет присвоено, если !(age > 18)
+);
+
+location.assign(url); // "stop.html"
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-conditional-operator', 'Условный Оператор')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-11.12', 'Условный оператор')}}{{Spec2('ES5.1')}}
{{SpecName('ES1', '#sec-11.12', 'Условный оператор')}}{{Spec2('ES1')}}Изначальное определение. Реализация в JavaScript 1.0.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ОсобенностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ОсобенностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрие также

+ + -- cgit v1.2.3-54-g00ecf