Non pensare a come un controllo- blocco (es .: un if-else o un interruttore). Non è veramente pensato per eseguire il codice al suo interno.
È possibile. Diventa molto brutto, molto veloce, che sconfigge lo scopo.
cosa si vuole veramente usarlo per è assegnazione di valori.
Prendendo il vostro esempio iniziale e girando sulla sua testa un po ', si ottiene:
direction = (this.dragHandle.hasClass("handle-low")) ? "left" : "right";
Sede. Ora quello che ho fatto è che ho preso qualcosa che avrebbe richiesto un if/else o un interruttore, che sarebbe stato usato per assegnare a quel valore, e l'ho pulito bene.
Si può anche fare un altro, se il tipo di ternario:
y = (x === 2) ? 1 : (x === 3) ? 2 : (x === 4) ? 7 : 1000;
È inoltre possibile utilizzarlo per sparare codice, se vuoi, ma diventa davvero difficile dopo un po ', di sapere cosa sta andare dove (si veda l'esempio precedente per vedere come anche assegnazione può iniziare a guardare strano a colpo d'occhio) ...
((this.dragHandle.hasClass("...")) ? fireMe(something) : noMe(somethingElse));
... questo sarà tipicamente funzionerà.
Ma in realtà non è più carino o più utile di una funzione di if o branching, che richiama immediatamente (e programmatori non JS, o programmatori JS non addestrati stanno per schifarsi cercando di mantenere il proprio codice).
Il termine tecnico per questi frammenti è _ espressioni condizionali_, che utilizzano l'operatore condizionale '?:'. Poiché questo operatore accetta tre operandi, è chiamato operatore ternario. –
2 volte più veloce http://jsperf.com/speed-test-for-conditions –