Как вы используете его?: (условный) оператор в JavaScript?
может кто-нибудь объяснить мне простыми словами, что такое ?:
(условно, "тройных") оператор и как его использовать?
15 ответов
это однострочная стенография для оператора if-else. Это называется условным оператором.1
вот пример кода, который может быть сокращен с помощью условного оператора:
if(userIsYoungerThan21) {
serveGrapeJuice();
}
else {
serveWine();
}
это можно сократить с помощью ?:
вот так:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
в Javascript условный оператор может оценивать выражение, а не только оператор:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
их можно даже приковать:
userIsYoungerThan4 ? serveMilk() : userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
будет осторожно, хотя, Или вы в конечном итоге с запутанным кодом, как это:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1часто называют "тернарным оператором", но на самом деле это просто a тернарный оператор [оператор принимает три операнда]. Однако в настоящее время это единственный JavaScript.
Я хочу добавить некоторые ответы.
в случае, если вы столкнулись (или хотите использовать) Троицу в такой ситуации, как " отображать переменную, если она установлена, иначе...вы можете сделать его еще короче, без тройных.
вместо:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
вы можете использовать:
var welcomeMessage = 'Hello ' + (username || 'guest');
Это Javascripts equivallent сокращенного тернарного оператора PHP ?:
или даже:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
он оценивает переменную, и если это false или unset, он переходит к следующему.
Он называется "троичным" или "условным" оператором.
пример
The ?: оператор может использоваться как сокращение для if...еще заявление. Она обычно используется как часть большее выражение, где if...еще заявление было бы неловким. Для пример:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
в примере создается строка содержащий " Добрый вечер."если это после 6 вечера. Эквивалентный код с использованием если...еще заявление будет выглядеть так следует:
var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
greeting += " evening.";
else
greeting += " day.";
в основном это условное выражение стенографии.
Смотрите также:
это немного сложно для google, когда все, что у вас есть, это символы ;) термины для использования - "условный оператор javascript".
Если вы видите еще какие-либо забавные символы в Javascript, вы должны сначала попытаться найти операторы Javascript:список операторов MDC. Единственное исключение, с которым вы, вероятно, столкнетесь, - это $
символ.
чтобы ответить на ваш вопрос, условных операторов заменить простые операторы if. Образец лучше всего:
var insurancePremium = age > 21 ? 100 : 200;
вместо:
var insurancePremium;
if (age > 21) {
insurancePremium = 100;
} else {
insurancePremium = 200;
}
Тернарный Оператор
обычно у нас есть условные операторы в JavaScript.
пример:
if (true) {
console.log(1)
}
else {
console.log(0)
}
# Answer
# 1
но он содержит две или более строк и не может назначить переменной. Javascript имеет решение для этой проблемы Тернарный Оператор. Тернарный оператор может записывать в одну строку и присваивать переменной.
пример:
var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1
этот тернарный оператор похож в C язык программирования.
Эй, приятель, просто помните, что JS работает, оценивая либо true, либо false, верно?
возьмем троичный оператор:
questionAnswered ? "Awesome!" : "damn" ;
во-первых, js проверяет, является ли questionAnswered true
или false
.
если true
( ?
) вы получите "потрясающе!"
else (:
) вы получите "черт";
надеюсь, это поможет другу:)
Это if statement
все на одной линии.
так
var x=1;
(x == 1) ? y="true" : y="false";
alert(y);
выражение для оценки находится в ( )
если он соответствует true, выполните код после ?
если он соответствует false, выполните код после :
Это называется ternary operator
. Для получения дополнительной информации, вот еще один вопрос, на который я ответил по этому поводу:
x = 9
y = 8
унарный
++x
--x
Бинарные
z = x + y
троичная
2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";
условный (троичный) оператор является единственным оператором JavaScript для этого требуется три операнда. Этот оператор часто используется в качестве ярлык для оператора if.
condition ? expr1 : expr2
Если условие истинно, оператор возвращает значение expr1; в противном случае он возвращает значение expr2.
function fact(n) {
if (n > 1) {
return n * fact(n-1);
} else {
return 1;
}
// we can replace the above code in a single line of code as below
//return (n != 1) ? n * fact(n - 1) : 1;
}
console.log(fact(5));
для получения дополнительных разъяснений, пожалуйста, прочитайте MDN документ ссылка
мы можем использовать тернарный оператор, как показано ниже, где вы можете сделать меньше кода :
var FullName = "Asp.net Core";
var FirstName = FullName.split(" ")[0]; //give the first index array value :"Asp.net"
var LastName = FullName.split(" ")[1]; //give the second index array value :"Core"
var splitLength = FullName.split(" ").length; //give length of array : 2
также мы можем использовать с Jquery, а также длину, как показано ниже пример:
//Suppose we have GuarantorName textbox which have value and want to split with space
var gnamesplit = $("#txtGuarantorName").val().split(" ");
var gLastName = gnamesplit.length > 0 ? gnamesplit[0] : "";
var gFirstName = gnamesplit.length > 1 ? gnamesplit[1] : "";
$("#txtLastName").val(gLastName);
$("#txtFirstName").val(gFirstName);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div >
Guarantor Name: <input type="text" id="txtGuarantorName" value="ASP.NET Core" /><br/>
<br/>
<br/>
First Name: <input type="text" id="txtLastName" value="ASP.NET Core" />
Last Name: <input type="text" id="txtFirstName" value="ASP.NET Core" />
</div>
Это, наверное, не самый элегантный способ сделать это. Но для тех, кто не знаком с троичными операторами, это может оказаться полезным. Мои личные предпочтения-сделать 1-вкладыш откаты вместо условие-блоки.
// var firstName = 'John'; // Undefined
var lastName = 'Doe';
// if lastName or firstName is undefined, false, null or empty => fallback to empty string
lastName = lastName || '';
firstName = firstName || '';
var displayName = '';
// if lastName (or firstName) is undefined, false, null or empty
// displayName equals 'John' OR 'Doe'
// if lastName and firstName are not empty
// a space is inserted between the names
displayName = (!lastName || !firstName) ? firstName + lastName : firstName + ' ' + lastName;
// if display name is undefined, false, null or empty => fallback to 'Unnamed'
displayName = displayName || 'Unnamed';
console.log(displayName);
(sunday == 'True') ? sun="<span class='label label-success'>S</span>" : sun="<span class='label label-danger'>S</span>";
sun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"