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?
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.
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.
ç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:
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;
}
z = (x == y ? 1 : 2);
est l'équivalent de
if (x == y)
z = 1;
else
z = 2;
sauf que c'est plus court.
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.
on l'appelle l'opérateur ternaire
tmp = (foo==1 ? true : false);
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 :)
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 :
ça s'appelle le ternary operator
. Pour plus d'informations, voici une autre question que j'ai répondu à ce sujet:
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";
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
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>
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);
(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>"