2012-04-13 12 views
11

estoy usando un montón de estos:cómo acortar la sintaxis jquery instrucción if-else?

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

Ya es la sintaxis "abreviada", pero me pregunto, si es posible reducir la línea de arriba aún más. Debe haber una manera mejor que buscar $ menu.jqmData ('menú-texto') y luego escribir todo de nuevo. ¿No hay?

¡Gracias por la ayuda!

Respuesta

21

Una manera más corta es usar la tubería doble. Básicamente utiliza el segundo valor si el primero es falsy.

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

También se puede utilizar el tiempo múltiple en la misma línea. Digamos que tiene una variable uberMenuTxt que tiene prioridad sobre las otras dos y puede hacerlo de esa manera.

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

Básicamente sigue en marcha cada vez que el valor actual es falsy y se detendrá en la primera que no lo es.

+0

¡GRANDE! Ton de código guardado :-) – frequent

+0

Pregunta: cuál precede al otro, si ambos devuelven un valor. Primero, como en una declaración if normal, ¿correcto? – frequent

+4

@frequent sí, así es como el || (O) funciona. si la primera instrucción devuelve verdadero, los siguientes ya no se evalúan. – GNi33

Cuestiones relacionadas