Hoe gebruik je de ? : (voorwaardelijke) operator in JavaScript?

In eenvoudige bewoordingen, wat is de operator ?:(voorwaardelijk, “ternair”) en hoe kan ik deze gebruiken?


Antwoord 1, autoriteit 100%

Dit is een afkorting van één regel voor een if-else-statement. Dit wordt de voorwaardelijke operator genoemd.1

Hier is een voorbeeld van code die kan worden ingekort met de voorwaardelijke operator:

var userType;
if (userIsYoungerThan18) {
  userType = "Minor";
} else {
  userType = "Adult";
}
if (userIsYoungerThan21) {
  serveDrink("Grape Juice");
} else {
  serveDrink("Wine");
}

Dit kan worden ingekort met de ?:zoals zo:

var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");

Zoals alle uitdrukkingen kan de voorwaardelijke operator ook worden gebruikt als een op zichzelf staande instructie met bijwerkingen, hoewel dit ongebruikelijkbuiten verkleining:

userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

Ze kunnen zelfs aan een ketting worden vastgemaakt:

serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');

Wees echter voorzichtig, anders krijg je een ingewikkelde code zoals deze:

var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;

1Vaak “de ternaire operator” genoemd, maar in feite is het gewoon eenternaire operator [een operator die drie operanden accepteert]. Het is echter de enige die JavaScript momenteel heeft.


Antwoord 2, autoriteit 23%

Ik wil toevoegenaan de gegeven antwoorden.

Als je een ternair tegenkomt (of wilt gebruiken) in een situatie als ‘toon een variabele als het is ingesteld, anders…’, dan kun je het nog korter maken, zonder een ternair.


In plaats van:

var welcomeMessage  = 'Hello ' + (username ? username : 'guest');

U kunt gebruiken:

var welcomeMessage  = 'Hello ' + (username || 'guest');

Dit is een Javascript-equivalent van PHP’s ternaire steno-operator ?:

Of zelfs:

var welcomeMessage  = 'Hello ' + (username || something || maybethis || 'guest');

Het evalueert de variabele, en als deze onwaar of niet ingesteld is, gaat hij door naar de volgende.


Antwoord 3, autoriteit 3%

Het wordt de ‘ternaire’ of ‘voorwaardelijke’ operator genoemd.

Voorbeeld

De ?:-operator kan worden gebruikt als een
snelkoppeling voor een if… else-instructie.
Het wordt meestal gebruikt als onderdeel van een
grotere uitdrukking waar een if…els
verklaring zou onhandig zijn. Voor
voorbeeld:

var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");

Het voorbeeld maakt een string
met daarin “Goedenavond.” als het is
na 18.00 uur. De equivalente code met
een if… else-statement zou eruitzien als
volgt:

var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
   greeting += " evening.";
else
   greeting += " day.";

Van MSDN JS-documentatie.

Eigenlijk is het een verkorte voorwaardelijke verklaring.

Zie ook:


Antwoord 4, autoriteit 3%

Het is een beetje moeilijk om te googlen als je alleen maar symbolen hebt 😉 De te gebruiken termen zijn “JavaScript voorwaardelijke operator”.

Als je nog meer grappige symbolen in JavaScript ziet, moet je eerst de operators van JavaScript opzoeken: Mozilla Developer Center’s lijst met operators. De enige uitzondering die u waarschijnlijk tegenkomt, is het $-symbool.

Om uw vraag te beantwoorden, vervangen voorwaardelijke operatorseenvoudige if-statements. Een voorbeeld is het beste:

var insurancePremium = age > 21 ? 100 : 200;

In plaats van:

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

Antwoord 5

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

is gelijk aan

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

behalve natuurlijk, het is korter.


Antwoord 6

Ternaire operator

Vaak hebben we voorwaardelijke instructies in Javascript.

Voorbeeld:

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

maar het bevat twee of meer regels en kan niet worden toegewezen aan een variabele.
Javascript heeft een oplossing voor dit probleem Ternaire operator.
Ternaire Operator kan in één regel schrijven en toewijzen aan een variabele.

Voorbeeld:

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

Deze Ternary-operator is vergelijkbaar in programmeertaal C.


Antwoord 7

Hé, onthoud dat js werkt door te evalueren naar waar of onwaar, toch?

laten we een ternaire operator nemen:

questionAnswered ? "Awesome!" : "damn" ;

Eerst controleert js of questionAnswered trueof falseis.

indien true( ?) krijg je “Geweldig!”

anders ( :) krijg je “verdomme”;

Hopelijk helpt dit vriend 🙂


Antwoord 8

Het wordt de ternaire operator genoemd

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

Antwoord 9

x = 9
y = 8

unair

++x
--x

Binair

z = x + y

Ternair

2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";

Antwoord 10

Het is een if statementallemaal op één regel.

Dus

var x=1;
(x == 1) ? y="true" : y="false";
alert(y);

De te evalueren uitdrukking staat in de ( )

Als het overeenkomt met waar, voert u de code uit na de ?

Als het overeenkomt met false, voert u de code uit na de :


Antwoord 11

De voorwaardelijke (ternaire) operator is de enige JavaScript-operator
dat duurt drie operanden. Deze operator wordt vaak gebruikt als a
snelkoppeling voor het if-statement.

condition ? expr1 : expr2 

Als de voorwaarde waar is, retourneert de operator de waarde van expr1;
anders geeft het de waarde van expr2 terug.

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));

Lees voor meer uitleg MDN-documentlink


Antwoord 12

Dit is waarschijnlijk niet bepaald de meest elegante manier om dit te doen. Maar voor iemand die niet bekend is met ternaire operatoren, kan dit nuttig zijn. Mijn persoonlijke voorkeur gaat uit naar 1-liner fallbacks in plaats van condition-blocks.

 // 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);

Ternaire operator


Antwoord 13

We kunnen zowel JQuery als lengte gebruiken, zoals in onderstaand voorbeeld:

Stel dat we een GuarantorName-tekstvak hebben dat een waarde heeft en dat we voornaam en achternaam willen krijgen, dan kan het nul zijn.
Dus liever dan

       var gnamesplit = $("#txtGuarantorName").val().split(" ");
        var gLastName = "";
        var gFirstName = "";
        if(gnamesplit.length > 0 ){
           gLastName  = gnamesplit[0];        
        }
        if(gnamesplit.length > 1 ){
           gFirstName = gnamesplit[1];        
        }

We kunnen onderstaande code gebruiken met JQuery met minimale code

   
    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>

14

Ternaire uitdrukkingen zijn erg handig in JS, vooral reageren. Hier is een vereenvoudigd antwoord op de vele goede, gedetailleerde aangeboden.

condition ? expressionIfTrue : expressionIfFalse

Denk aan expressionIfTrueals de OG als de verklaring waar is;
Denk aan expressionIfFalseals de else verklaring.

Voorbeeld:

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

Dit controleerde de waarde van X, de eerste Y = (waarde) geretourneerd als het TRUE, het tweede rendement na de dikke darm: “retourneer Y = (waarde) indien onwaar.


15

Het wordt de ternary operatorgenoemd. Voor nog meer info is hier een andere vraag die ik hierover heb beantwoord:

HOE MOETEN EEN ANDERE VERKLARING zonder ‘anders’


Antwoord 16

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

Other episodes