È inoltre possibile approssimare un if/else utilizzando gli operatori logico.
(a && b) || c
Quanto sopra è più o meno lo stesso che dire:
a ? b : c
E, naturalmente, più o meno lo stesso di:
if (a) { b } else { c }
Dico più o meno perché c'è una differenza con questo approccio , in quanto devi sapere che il valore di b
verrà valutato come true, altrimenti riceverai sempre c
. Bisogna rendersi conto che la parte che appare if() { here }
fa ora parte della condizione in cui si inserisce if (here) { }
.
Quanto sopra è possibile a causa del comportamento di JavaScripts di passaggio/restituzione di uno dei valori originali che formano l'espressione logica, che dipende dal tipo di operatore.Alcuni altri linguaggi, come PHP, portano il risultato effettivo dell'operazione cioè vero o falso, il che significa che il risultato è sempre vero o falso; es:
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 ad un normale if, è che i primi due metodi possono operare sul lato destro di un argomento cioè come parte di un'assegnazione.
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 uno standard di istruzione if potrebbe essere quella di duplicare l'assigment:
if (a) { d = b } else { d = c }
Si può chiedere perché usare solo Logical Operators al posto del Ternary Operator, per i casi semplici che probabilmente wouldn a meno che non volessi assicurarti che a
e b
fossero entrambi veri. È inoltre possibile ottenere condizioni complesse più snelle con gli operatori logici, che possono diventare piuttosto disordinati utilizzando operazioni ternarie nidificate ... quindi, di nuovo, se si desidera che il codice sia facilmente leggibile, non è nemmeno così intuitivo.
Dov'è il jQuery qui? E comunque non capisco davvero la domanda. – Marc
parte jquery potrebbe essere come questo $ (document) .ready (function() {var a = 2; var b = 3; se (a takeItEasy
anche una domanda knockoutjs –