2012-01-04 21 views
14

Mientras mira por algún código (JavaScript), me encontré con este pedazo de código:&& operador en Javascript

<script>window.Bootloader && Bootloader.done(["pQ27\/"]);</script> 

Lo que no entiendo es por lo que el && está haciendo allí, el código es de Facebook y obviamente está minimizado y/u ofuscado, pero todavía hace lo mismo.

tl; dr: ¿Qué hace el operador && hacer aquí?

Respuesta

18

&& se asegura de que existe la función/objeto Bootloader antes de llamar al método done. El código aprovecha el cortocircuito booleano para garantizar que la primera expresión se evalúe como verdadera antes de ejecutar la segunda. Vea la entrada short-circuit evaluation wikipedia para una explicación más detallada.

+1

No hay clases en JavaScript. Bootloader sería una función u objeto – paislee

+0

@paislee: Roger eso, actualizado. – sdolan

+6

No se "asegura" de que * Bootloader * sea una función o un objeto, simplemente prueba si el objeto * window * tiene una propiedad * Bootloader * cuyo valor es truey. Si es así, entonces asume que es invocable. – RobG

14
window.Bootloader && Bootloader.done(["pQ27\/"]); 

es equivalente a:

if(window.Bootloader) { 
    Bootloader.done(["pQ27\/"]); 
} 
8

&& es un operador AND, al igual que la mayoría en todas partes. Realmente no hay nada lujoso al respecto.

La mayoría de los lenguajes, JavaScript incluido, dejarán de evaluar un operador AND si el primer operando es falso.

En este caso, si window.Bootloader no existe, será undef, que se evalúa como falso, por lo que JavaScript omitirá la segunda parte.

Si es cierto, continúa y llama al Bootloader.done(...).

pensar en él como un acceso directo para if(window.Bootloader) { Bootloader.done(...) }

2

también & & operador devuelve el primer valor encontrado de este tipo: nulo, indefinido, 0, falso, NaN ""

ejemplo: si

var1 = 33 
var2 = 0 
var3 = 45 

var1 && var2 && var3 
returns 0