2012-04-27 18 views
23

Duplicar posibles:
What does “options = options || {}” mean in Javascript?Dos símbolos de tubería (OR) en esta línea Javascript

he visto esto en JS:

item = item || {}; 

que supongo que es alguna variación de un operador ternario pero, ¿qué es lo que realmente hace?

+6

estamos recibiendo algunas Snobbs JavaScript en la casa esta noche downvoting o gente tonta acaba generales! ? – benhowdle89

+1

@Martin. y qué sugieres que podría haber buscado para recibir esta respuesta ... – benhowdle89

+0

buena pregunta. He estado buscando por un tiempo y finalmente [lo tengo] (http://stackoverflow.com/questions/9579262/logical-operator-in-javascript-0-stands-for-boolean-false). Pero para ser honesto, no es tan fácil como pensaba. Revertir todas mis downvotes –

Respuesta

28
(expr1 || expr2) 

"devuelve expr1 si se puede convertir en true, en caso contrario, devuelve expr2."

source

Así que cuando expr1 es (o evalúa a) uno de estos 0,"",false,null,undefined,NaN, entonces expr2 es devuelto, de lo contrario expr1 se devuelve

2

equipara a:

if(!item){ item = {}; } 
+1

Entonces, si el artículo es FALSO, ¿el artículo es un objeto vacío? – benhowdle89

+2

'false' o' undefined' o cualquier otro valor de falsey, sí –

+2

¿por qué se votó negativamente? –

7

Si el artículo existe, establecer un elemento a otro, o se establece en {}

+4

no merece un voto a la baja. –

+0

@Sheikh Sí, la respuesta no está mal, pero creo que es bastante pobre. Kolink y ajax tienen las mejores respuestas aquí. Especialmente Kolink merece el voto favorable –

+0

@Hee ¿por qué no? . –

11

Se llama redundancia, pero en este caso es una buena cosa. . Básicamente, si item no está definido (o de otra manera Falsy (false, 0, "" ...), a continuación, le damos un valor predeterminado

ejemplo más común es en los eventos:

evt = evt || window.event; 
+4

no se merece un voto abajo. –

Cuestiones relacionadas