Sto usando jQuery 1.7.1
Sto appena iniziando a utilizzare l'operatore ternario JavaScript per sostituire semplici istruzioni if / else. L'ho fatto con successo in diversi posti. Sono rimasto sorpreso quando ho fatto funzionare con successo qualcos'altro quando pensavo che non sarebbe successo, ma ho provato comunque.
Ecco la dichiarazione originale:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
if (IsChecked == true){
removeItem($this);
} else {
addItem($this);
}
}
Ecco la stessa funzione usando l'operatore ternario:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
(IsChecked == true) ? removeItem($this) : addItem($this);
}
Sono rimasto sorpreso perché tutti gli esempi che ho visto utilizzati stavano semplicemente impostando variabili come questa:
x = (1 < 2) ? true : false;
La mia domanda è se questo è un uso "normale" e funzionerà nella maggior parte delle versioni di JavaScript? Dove fallirà? Ci sono altri usi meno ovvi per questo?
AGGIORNAMENTO - Grazie per il consiglio del "mondo reale" !!!
Lo sto usando come funzione:
function updateItem() {
$this = $(this);
$this.hasClass("IsChecked") ? removeItem($this) : addItem($this);
}
(IsChecked ? removeItem : addItem)($this). Tuttavia, per rispondere alla tua domanda, sì, questo è normale e non c'è niente di sbagliato nell'usare operatori ternari purché non sminuiscano la manutenibilità o leggibilità in una situazione in cui è necessario. jsfiddle.net/vsB3f
if($this.hasClass("IsChecked")) removeItem($this); else addItem($this)è il modo corretto. L'operatore ternario non è inteso per casi come questo ma per cose come foo(isChecked ? 'bar' : meow());(cioè quando ti interessa il "valore di ritorno" di qualunque cosa tu faccia nei blocchi then / else)
$(this).hasClass("IsChecked") ? removeItem($this) : addItem($this); posso capire il tuo codice così com'è su una riga, quindi si adatta alla mia regola pratica (vedi post sotto). Per me va bene.