Come posso usare un'istruzione inline if
in JavaScript? C'è anche una else
dichiarazione in linea ?
Qualcosa come questo:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Come posso usare un'istruzione inline if
in JavaScript? C'è anche una else
dichiarazione in linea ?
Qualcosa come questo:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Risposte:
Non hai necessariamente bisogno di jQuery. Solo JavaScript lo farà.
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
La c
variabile sarà minor
se il valore è true
e major
se il valore è false
.
Questo è noto come operatore condizionale (ternario).
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator
if (a < b) c = 'major';
Per scrivere if
un'istruzione in linea, il codice al suo interno dovrebbe essere solo un'istruzione:
if ( a < b ) // code to be executed without curly braces;
C'è un operatore ternario, come questo:
var c = (a < b) ? "a is less than b" : "a is not less than b";
0 < 1 : 5 : 120;
è un'affermazione perfettamente valida. Un po 'inutile a meno che tu non sia pagato per riga, però.
if
istruzione noiosa in tal caso probabilmente renderà il tuo codice molto più facile da leggere e comprendere, e meno probabilmente si romperà con le modifiche successive.
È inoltre possibile approssimare un if / else utilizzando solo gli operatori logici.
(a && b) || c
Quanto sopra è approssimativamente lo stesso di dire:
a ? b : c
E ovviamente, più o meno lo stesso di:
if ( a ) { b } else { c }
Dico approssimativamente perché c'è una differenza con questo approccio, nel fatto che devi sapere che il valore di b
verrà valutato come vero, altrimenti otterrai sempre c
. Bascialmente devi capire che la parte che apparirebbe if () { here }
ora fa parte della condizione che metti if ( here ) { }
.
Quanto sopra è possibile a causa del comportamento di JavaScripts di passare / restituire uno dei valori originali che costituivano l'espressione logica, che dipende dal tipo di operatore. Alcune altre lingue, come PHP, portano avanti il risultato effettivo dell'operazione, ovvero vero o falso, il che significa che il risultato è sempre vero o falso; per esempio:
14 && 0 /// results as 0, not false
14 || 0 /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4, not true
true && '' /// results as ''
{} || '0' /// results as {}
Un vantaggio principale, rispetto a un'istruzione if normale, è che i primi due metodi possono operare sul lato destro di un argomento, ovvero come parte di un incarico.
d = (a && b) || c;
d = a ? b : c;
if `a == true` then `d = b` else `d = c`
L'unico modo per raggiungere questo obiettivo con un'istruzione if standard sarebbe duplicare l'asserzione:
if ( a ) { d = b } else { d = c }
Potresti chiederti perché usare solo gli operatori logici invece dell'operatore ternario , per casi semplici che probabilmente non faresti, a meno che non volessi essere sicuro a
ed b
entrambi fossero veri. Puoi anche ottenere condizioni complesse più snelle con gli operatori logici, che possono diventare piuttosto disordinati usando le operazioni ternarie annidate ... poi di nuovo se vuoi che il tuo codice sia facilmente leggibile, né sono davvero così intuitivi.
In parole povere, la sintassi spiegava:
if(condition){
do_something_if_condition_is_met;
}
else{
do_something_else_if_condition_is_not_met;
}
Può essere scritto come:
condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;
condition ? true
true
false
e ""
dovrebbe andare tutto bene per ignorare la parte else.
2 == 2 ? doSomething()
sarebbe lo stesso di if (2 == 2) doSomething()
?
: false
o : ""
dovrebbe essere lì come javascript si aspetta questo.
Cordiali saluti, è possibile comporre operatori condizionali
var a = (truthy) ? 1 : (falsy) ? 2 : 3;
Se la tua logica è sufficientemente complessa, potresti prendere in considerazione l'utilizzo di un IIFE
var a = (function () {
if (truthy) return 1;
else if (falsy) return 2;
return 3;
})();
Naturalmente, se prevedi di utilizzare questa logica più di una volta, allora dovresti incapsularla in una funzione per mantenere le cose belle e ASCIUTTE.
La domanda non è essenzialmente: posso scrivere quanto segue?
if (foo)
console.log(bar)
else
console.log(foo + bar)
la risposta è sì, si tradurrà sopra.
tuttavia, diffidare di fare quanto segue
if (foo)
if (bar)
console.log(foo)
else
console.log(bar)
else
console.log(foobar)
assicurati di racchiudere il codice ambiguo tra parentesi graffe poiché quanto sopra genererà un'eccezione (e permutazioni simili produrranno un comportamento indesiderato).
in linea se:
(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')
conclusione veritiera: affermazioni eseguite quando l'ipotesi è vera
conclusione di falsa: affermazioni eseguite quando l'ipotesi è falsa
il tuo esempio:
var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');