Содержание

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

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

Оператор возвращает значение выражения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("Хорошо, вы можете продолжить."),
    
    
    "continue.html" 
) : (
    alert("Вы слишком молоды!"),
    alert("Простите :-("),
    
    "stop.html" 
);

location.assign(url); 

Тернарный оператор Java за три минуты

Тернарный оператор является формой синтаксического сахара для операторов if- else . Он также известен как условный оператор, который, возможно, является более значимым именем, потому что он оценивает условия, как if делал. При условии, что оператор используется осторожно, он может сделать код более кратким, не жертвуя удобочитаемостью.

Эта статья требует от вас четкого понимания того, как if заявления работают в Java .

Троичный оператор

Тернарный оператор оценивает условие и выбирает одну из двух ветвей для выполнения. Как и во многих других языках программирования

? и : символы используются для его формирования. Другие распространенные имена, с которыми вы можете столкнуться, которые относятся к одному и тому же понятию, являются встроенными if , троичными if и условными операторами .

Синтаксис

Название троичного относится к тому факту, что оператор берет три операнда.

 condition ? exprTrue : exprFalse 

condition является логическим выражением, которое оценивается как true или false . И exprTrue и exprFalse также являются выражениями, но они могут вычислять все, что вы хотите ( кроме void ). Если условие true , троичный оператор вычисляет exprTrue . В противном случае

exprFalse оценивается.

Тернарный оператор — это выражение (например, price + 20 ), которое означает, что после выполнения оно имеет значение. И это значение необходимо использовать в дальнейшем, например, присваивая его переменной или возвращая из метода, иначе выражение не скомпилируется.

Стоит отметить, что оператор ленив в том смысле, что вычисляется только используемое выражение: троичный оператор не будет оценивать неиспользуемую ветвь.

Примеры

Как видите, базовая структура очень похожа на оператор if else- else но она сведена в одну строку. Давайте посмотрим на конкретный пример. Он демонстрирует, как простой оператор if else- else

может быть заменен тернарным оператором.

 int price; if (isPremiumMember()) { price = 80; } else { price = 100; } // is equivalent to int price = isPremiumMember() ? 80 : 100; 

Переменная price получает значение в зависимости от того, является ли пользователь премиум-членом или нет. Как видите, троичный оператор является кратким и в этом случае улучшает читаемость.

Поскольку вы можете использовать его как выражение, часто это позволяет вам удалить несколько операторов return в методе, заменив их одним выражением.

 int price() { if (isPremiumMember()) { return 80; } else { return 100; } } 

Можно заменить на

 int price() { return isPremiumMember() ? 80 : 100; } 

Метод пересмотренных price значительно короче и разборчивее, чем раньше.

Вложение нескольких операторов

Java позволяет вложить один условный оператор в другой. Будьте осторожны при этом, хотя. Вложенные условные операторы могут препятствовать удобочитаемости.

 int amount = 10; String result = amount <= 2 ? "couple" : amount > 2 && amount < 5 ? "few" : amount <= 5 ? "several" : "many"; 

Хотя этот пример можно улучшить с помощью форматирования, иногда лучше избегать использования тернарного оператора и переходить к обычному старому маршруту if -thense или switch .

Резюме

Вы узнали, что троичный оператор позволяет сократить оператор if else else to до однострочного condition ? exprTrue : exprFalse condition ? exprTrue : exprFalse . Если все сделано правильно, это делает код более лаконичным и улучшает читабельность.

Однако меньшее количество строк кода не всегда лучше . Легко злоупотребить троичным оператором и сделать ваш код менее читабельным . Придерживайтесь здравого смысла и имейте в виду, что программы должны быть написаны для того, чтобы люди могли читать, и только для того, чтобы машины выполнялись . Более читаемый способ выражения условий, особенно если их много, может быть оператором switch .

Java тернарный оператор пример – Тарифы на сотовую связь