Comment utilisez-vous?: opérateur (conditionnel) en JavaScript?

quelqu'un Peut-il m'expliquer en termes simples ce qu'est le ?: (conditionnel, "ternaire") et comment l'utiliser?

293
demandé sur T.J. Crowder 2011-06-07 06:10:54

15 réponses

ceci est un raccourci d'une ligne pour une déclaration if-else. Il est appelé l'opérateur conditionnel. 1

voici un exemple de code qui pourrait être raccourci avec l'opérateur conditionnel:

if(userIsYoungerThan21) {
  serveGrapeJuice();
}
else {
  serveWine();
}

cela peut être raccourci avec le ?: comme ainsi:

userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

en JavaScript conditional operator peut évaluer à une expression, pas seulement une déclaration:

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

ils peuvent même être enchaînés:

userIsYoungerThan4 ? serveMilk() : userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

faites attention, cependant, ou vous finirez avec du code alambiqué comme ceci:

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

1 souvent appelé "l'opérateur ternaire", mais en fait c'est juste a opérateur ternaire [un opérateur acceptant trois opérandes]. C'est le seul JavaScript qui existe.

455
répondu Peter Olson 2016-09-15 18:29:30

je veux ajouter certains pour les réponses données.

dans le cas où vous rencontrez (ou voulez utiliser) un ternaire dans une situation comme 'afficher une variable si elle est définie, autrement...', vous pouvez le rendre encore plus court, sans un ternaire .


au lieu de:

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

vous pouvez utiliser:

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

C'est Javascripts équivallent de PHP listes d'abréviations opérateur ternaire ?:

ou même:

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

évalue la variable, et si elle est fausse ou non, elle passe à la suivante.

80
répondu Jeffrey Roosendaal 2017-10-30 13:15:27

ça s'appelle l'opérateur "ternaire" ou "conditionnel".

exemple

le ?: opérateur peut être utilisé comme un raccourci pour un si...d'autre déclaration. Il est généralement utilisé dans le cadre d'un expression plus large où un Fi...autre déclaration serait maladroit. Pour exemple:

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

l'exemple crée une chaîne contenant "Bonne soirée." si il est après 6 heures du soir. Le code équivalent en utilisant un si...else comme

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

From MSDN js documentation .

en gros, c'est une déclaration conditionnelle en sténo.

Voir aussi:

21
répondu Michael Robinson 2017-05-23 11:47:32

il est un peu difficile de google quand tout ce que vous avez sont des symboles ;) les termes à utiliser sont"JavaScript conditional operator".

si vous voyez d'autres symboles amusants en Javascript, vous devriez d'abord chercher les opérateurs de Javascript: liste des opérateurs de MDC . La seule exception que vous êtes susceptible de rencontrer est le $ symbole .

pour répondre à votre question, conditionnelle les opérateurs remplacer simple si les déclarations. Un exemple est le meilleur:

var insurancePremium = age > 21 ? 100 : 200;

au lieu de:

var insurancePremium;

if (age > 21) {
    insurancePremium = 100;
} else {
    insurancePremium = 200;
}
17
répondu David Tang 2017-05-23 12:02:56
z = (x == y ? 1 : 2);

est l'équivalent de

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

sauf que c'est plus court.

8
répondu Ernest Friedman-Hill 2011-06-07 02:13:36

Opérateur Ternaire

nous avons souvent des énoncés conditionnels en Javascript.

exemple:

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

mais il contient deux ou plusieurs lignes et ne peut pas attribuer à une variable. Javascript ont une solution pour ce problème opérateur ternaire . L'opérateur ternaire peut écrire dans une ligne et assigner à une variable.

exemple:

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

Cet opérateur Ternaire est Similaire en C langage de programmation.

6
répondu Simplans 2016-08-21 15:59:52

on l'appelle l'opérateur ternaire

tmp = (foo==1 ? true : false);
4
répondu eagle12 2011-06-07 02:13:58

Hey mate rappelez-vous juste js évalue à true ou false, droit?

prenons un opérateur ternaire :

questionAnswered ? "Awesome!" : "damn" ;

premièrement, js vérifie si la réponse à la question Est true ou false .

si true ( ? ), vous obtiendrez "Génial!"

autrement ( : ) vous obtiendrez "damn";

Espérons que cela aide un ami :)

3
répondu Guy Keren 2017-05-24 11:11:34

c'est un if statement tous sur une ligne.

Donc

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

l'expression à évaluer est ( )

si elle correspond à true, exécutez le code après le ?

si elle correspond à false, exécutez le code après le :

2
répondu Jason Gennaro 2011-06-07 02:18:01

ça s'appelle le ternary operator . Pour plus d'informations, voici une autre question que j'ai répondu à ce sujet:

comment écrire une instruction IF else sans 'else'

1
répondu Travis Webb 2017-05-23 12:34:53
x = 9
y = 8

unaire

++x
--x

binaire

z = x + y

Ternaire

2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";
1
répondu Gajendra D Ambi 2018-02-10 16:04:24

l'opérateur conditionnel (ternaire) est le seul opérateur JavaScript qui prend trois opérandes. Cet opérateur est fréquemment utilisé comme raccourci pour la déclaration if.

condition ? expr1 : expr2 

si la condition est vraie, l'opérateur renvoie la valeur de expr1; sinon, elle renvoie la valeur de 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));

pour plus de précisions, lire lien vers le document MDN

0
répondu Srikrushna Pal 2018-06-28 11:54:06

Nous pouvons utiliser l'opérateur ternaire comme ci-dessous où vous pouvez faire le moins de codage :

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

nous pouvons également utiliser avec Jquery ainsi que la longueur comme ci-dessous exemple:

    //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>
0
répondu Ajay2707 2018-09-25 10:58:07

ce n'est probablement pas la façon la plus élégante de le faire. Mais pour quelqu'un qui n'est pas familier avec les opérateurs ternaires, cela pourrait s'avérer utile. Ma préférence personnelle est de faire des régressions de 1-liner au lieu de blocs de condition.

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

Opérateur Ternaire

0
répondu Joakim Sandqvist 2018-10-02 10:41:08
 (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>"
-3
répondu Chandrashekhar Komati 2017-05-08 07:35:54