Как вы используете его?: (условный) оператор в 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.";

С документация MSDN JS.

в основном это условное выражение стенографии.

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


это немного сложно для google, когда все, что у вас есть, это символы ;) термины для использования - "условный оператор javascript".

Если вы видите еще какие-либо забавные символы в Javascript, вы должны сначала попытаться найти операторы Javascript:список операторов MDC. Единственное исключение, с которым вы, вероятно, столкнетесь, - это $ символ.

чтобы ответить на ваш вопрос, условных операторов заменить простые операторы if. Образец лучше всего:

var insurancePremium = age > 21 ? 100 : 200;

вместо:

var insurancePremium;

if (age > 21) {
    insurancePremium = 100;
} else {
    insurancePremium = 200;
}

z = (x == y ? 1 : 2);

эквивалентно

if (x == y)
    z = 1;
else
    z = 2;

за исключением, конечно, короче.


Тернарный Оператор

обычно у нас есть условные операторы в JavaScript.

пример:

if (true) {
    console.log(1)
} 
else {
    console.log(0)
}
# Answer
# 1

но он содержит две или более строк и не может назначить переменной. Javascript имеет решение для этой проблемы Тернарный Оператор. Тернарный оператор может записывать в одну строку и присваивать переменной.

пример:

var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1

этот тернарный оператор похож в C язык программирования.


Он называется тернарным оператором

tmp = (foo==1 ? true : false);

Эй, приятель, просто помните, что 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. Для получения дополнительной информации, вот еще один вопрос, на который я ответил по этому поводу:

Как написать оператор IF else без "else"


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>"