Qualcuno può spiegarmi in parole semplici qual è l' ?:
operatore (condizionale, "ternario") e come usarlo?
?:
(come l'hai scritto, senza alcuna dichiarazione tra) - l' operatore Elvis . Abbastanza intelligente.
Qualcuno può spiegarmi in parole semplici qual è l' ?:
operatore (condizionale, "ternario") e come usarlo?
?:
(come l'hai scritto, senza alcuna dichiarazione tra) - l' operatore Elvis . Abbastanza intelligente.
Risposte:
Questa è una scorciatoia di una riga per un'istruzione if-else. Si chiama operatore condizionale. 1
Ecco un esempio di codice che potrebbe essere abbreviato con l'operatore condizionale:
var userType;
if (userIsYoungerThan18) {
userType = "Minor";
} else {
userType = "Adult";
}
if (userIsYoungerThan21) {
serveDrink("Grape Juice");
} else {
serveDrink("Wine");
}
Questo può essere abbreviato in ?:
modo simile:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
Come tutte le espressioni, l'operatore condizionale può anche essere usato come un'istruzione indipendente con effetti collaterali, sebbene ciò sia insolito al di fuori della minificazione:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
Possono anche essere incatenati:
serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');
Fai attenzione, o finirai con un codice contorto come questo:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1 Spesso chiamato "l'operatore ternario", ma in realtà è solo un operatore ternario [un operatore che accetta tre operandi]. Tuttavia, è l'unico che JavaScript ha attualmente.
ternary
è il tipo di operatore (cioè ha 3 parti). Il nome di quello specifico operatore ternario è il conditional operator
. Sembra esserci solo un operatore ternario in JS, quindi i termini vengono abusati.
||
operatore, poiché cortocircuita se il valore a sinistra è vero.
Voglio aggiungerne alcune alle risposte fornite.
Nel caso in cui incontri (o desideri usare) un ternario in una situazione come 'visualizza una variabile se è impostata, altrimenti ...', puoi renderlo ancora più breve, senza un ternario .
Invece di:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
Puoi usare:
var welcomeMessage = 'Hello ' + (username || 'guest');
Questo è Javascripts equivalente dell'operatore sternale stenografico di PHP ?:
O anche:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
Valuta la variabile e, se è falsa o non impostata, passa alla successiva.
'Hello ' + (username ? username : 'guest')
, Hello +
se ignorato e viene restituito solo il risultato dell'operazione ternaria. Qualcuno può spiegare perché?
'Hello ' + username
che è sempre true
, perché è una stringa con una lunghezza maggiore di 0.
Si chiama operatore "ternario" o "condizionale".
Esempio
L'operatore?: Può essere usato come scorciatoia per un'istruzione if ... else. In genere viene utilizzato come parte di un'espressione più ampia in cui un'istruzione if ... else sarebbe imbarazzante. Per esempio:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
L'esempio crea una stringa contenente "Buona sera". se è dopo le 18:00. Il codice equivalente che utilizza un'istruzione if ... else dovrebbe apparire come segue:
var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
greeting += " evening.";
else
greeting += " day.";
Dalla documentazione MSDN JS .
Fondamentalmente è una frase condizionale abbreviata.
Vedi anche:
È un po 'difficile google quando tutto ciò che hai sono simboli;) I termini da usare sono "operatore condizionale javascript".
Se vedi altri simboli divertenti in Javascript, dovresti prima cercare gli operatori di Javascript: l'elenco degli operatori di MDC . L'unica eccezione che potresti incontrare è il $
simbolo .
Per rispondere alla tua domanda, gli operatori condizionali sostituiscono semplici istruzioni if. Un esempio è il migliore:
var insurancePremium = age > 21 ? 100 : 200;
Invece di:
var insurancePremium;
if (age > 21) {
insurancePremium = 100;
} else {
insurancePremium = 200;
}
var olderThan20 = age > 20;
invece.
z = (x == y ? 1 : 2);
è equivalente a
if (x == y)
z = 1;
else
z = 2;
tranne, ovviamente, è più breve.
La maggior parte delle risposte sono corrette ma voglio aggiungere altro. L' operatore ternario è associativo a destra, il che significa che può essere incatenato nel modo seguente if … else-if … else-if … else
:
function example() {
return condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4;
}
Equivalente a:
function example() {
if (condition1) { return value1; }
else if (condition2) { return value2; }
else if (condition3) { return value3; }
else { return value4; }
}
Maggiori dettagli sono qui
Si chiama operatore ternario
tmp = (foo==1 ? true : false);
Operatore ternario
Comunemente abbiamo dichiarazioni condizionali in Javascript.
Esempio:
if (true) {
console.log(1)
}
else {
console.log(0)
}
# Answer
# 1
ma contiene due o più righe e non può essere assegnato a una variabile. Javascript ha una soluzione per questo Problema Operatore ternario . L'operatore ternario può scrivere su una riga e assegnarlo a una variabile.
Esempio:
var operator = true ? 1 : 0
console.log(operator)
# Answer
# 1
Questo operatore ternario è simile nel linguaggio di programmazione C.
Ehi amico, ricordi solo che js funziona valutando vero o falso, giusto?
prendiamo un operatore ternario:
questionAnswered ? "Awesome!" : "damn" ;
In primo luogo, js verifica se questionAnswered è true
o false
.
se true
( ?
) otterrai "Fantastico!"
else ( :
) otterrai "dannazione";
Spero che questo aiuti amico :)
È if statement
tutto su una riga.
Così
var x=1;
(x == 1) ? y="true" : y="false";
alert(y);
L'espressione da valutare si trova in ( )
Se corrisponde a true, eseguire il codice dopo il ?
Se corrisponde a false, eseguire il codice dopo il :
x = 9
y = 8
unario
++x
--x
Binario
z = x + y
Ternario
2>3 ? true : false;
2<3 ? true : false;
2<3 ? "2 is lesser than 3" : "2 is greater than 3";
Si chiama il ternary operator
. Per qualche informazione in più, ecco un'altra domanda a cui ho risposto riguardo a questo:
conditional operator
. Sembra esserci solo un operatore ternario in JS, quindi i termini vengono abusati.
Questo probabilmente non è esattamente il modo più elegante per farlo. Ma per qualcuno che non ha familiarità con gli operatori ternari, questo potrebbe rivelarsi utile. La mia preferenza personale è quella di eseguire fallback di 1 linea anziché blocchi di condizioni.
// 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);
Possiamo usare con Jquery e la lunghezza come nell'esempio seguente:
Supponiamo di avere la casella di testo GuarantorName che ha valore e vuole ottenere il nome e il cognome, potrebbe essere nullo. Così rathar di
var gnamesplit = $("#txtGuarantorName").val().split(" ");
var gLastName = "";
var gFirstName = "";
if(gnamesplit.length > 0 ){
gLastName = gnamesplit[0];
}
if(gnamesplit.length > 1 ){
gFirstName = gnamesplit[1];
}
Possiamo usare il codice seguente con Jquery con il codice minimo
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>
Le espressioni ternarie sono molto utili in JS, in particolare React. Ecco una risposta semplificata a molti buoni, dettagliati forniti.
condition ? expressionIfTrue : expressionIfFalse
Pensa expressionIfTrue
a OG se l'istruzione diventa true;
pensare expressionIfFalse
come l'affermazione else.
Esempio:
var x = 1;
(x == 1) ? y=x : y=z;
questo ha verificato il valore di x, il primo y = (valore) restituito se vero, il secondo ritorno dopo i due punti: restituito y = (valore) se falso.
L'operatore condizionale (ternario) è l'unico operatore JavaScript che accetta tre operandi. Questo operatore viene spesso utilizzato come collegamento per l'istruzione if.
condition ? expr1 : expr2
Se la condizione è vera, l'operatore restituisce il valore di expr1; in caso contrario, restituisce il valore di 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));
Per ulteriori chiarimenti si prega di leggere il link al documento MDN
Se hai una condizione controlla la funzione di istanza in javascript . è facile da usare operatore ternario . che avrà bisogno di una sola linea per implementare. Ex:
private module : string ='';
private page:boolean = false;
async mounted(){
if(this.module=== 'Main')
{
this.page = true;}
else{
this.page = false;
}
}
una funzione come questa con una condizione può essere scritta come segue.
this.page = this.module=== 'Main' ?true:false;
condizione ? if True: if False
(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>"
sunday ?
dovrebbe esseresun = "<span class='label " + ((sunday === 'True' ? 'label-success' : 'label-danger') + "'>S</span>"