2012-04-13 11 views
11

sto usando un sacco di questi:come abbreviare la frase if-else della sintassi jquery?

$text = $menu.jqmData('menu-text') ? 
      $menu.jqmData('menu-text') : self.options.menuTxt; 

E 'già la sintassi "abbreviata", ma mi chiedo, se è possibile ridurre ulteriormente la linea di cui sopra. Ci deve essere un modo migliore di controllare $ menu.jqmData ('menu-testo') e quindi scrivere di nuovo l'intera faccenda. Non c'è?

Grazie per l'aiuto!

risposta

21

Un modo più breve è utilizzare il doppio tubo. In pratica utilizza il secondo valore se il primo è falsy.

$text = $menu.jqmData('menu-text') || self.options.menuTxt; 

È inoltre possibile utilizzarlo più volte nella stessa riga. Diciamo che avevi una variabile uberMenuTxt che ha la priorità sugli altri due e potresti farlo in questo modo.

$text = uberMenuTxt || $menu.jqmData('menu-text') || self.options.menuTxt; 

Si mantiene sostanzialmente ad andare ogni volta che il valore corrente è falsy e si fermerà al primo che non è.

+0

GRANDE! Tonnellata di codice salvata :-) – frequent

+0

Domanda: quale precede l'altra, se entrambe restituiscono un valore. Il primo, come in una normale istruzione if, è corretto? – frequent

+4

@frequente si, questo è come || (OR) funziona. se la prima dichiarazione restituisce true, i seguenti non vengono più valutati. – GNi33

Problemi correlati