2012-01-04 14 views
14

Patrząc przez niektórych kodu (JavaScript), znalazłem ten kawałek kodu:&& operatora w JavaScript

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

Co ja nie rozumiem, co && robi tam, kod jest z Facebookiem i jest oczywiście zminimalizowany i/lub zaciemniony, ale wciąż robi to samo.

tl; dr: Jaki operator && zrobić tutaj?

Odpowiedz

18

&& upewnia się, że funkcja/obiekt Bootloader istnieje przed wywołaniem metody Bootloader. Kod wykorzystuje zwarcie binarne, aby upewnić się, że pierwsze wyrażenie jest prawdziwe przed wykonaniem drugiego. Zobacz wpis short-circuit evaluation wikipedia, aby uzyskać bardziej szczegółowe wyjaśnienie.

+1

Brak zajęć w JavaScript. Bootloader będzie funkcją lub obiektem – paislee

+0

@paylee: Roger, który został zaktualizowany. – sdolan

+6

Nie „upewnić się” * * Bootloader jest albo funkcją lub przedmiotem, po prostu sprawdza, czy okno * * Obiekt posiada bootloadera * * oferta, której wartość jest truthy. Jeśli tak, to zakłada, że ​​jest on możliwy do wywołania. – RobG

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

jest równoznaczne z:

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

&& jest operatorem AND, podobnie jak większość wszędzie indziej. Nie ma w tym nic nadzwyczajnego.

większości języków JavaScript włączone, zatrzyma oceny operatora AND jeśli pierwszy argument jest fałszywy.

W tym przypadku, jeśli window.Bootloader nie istnieje, będzie to undef, które jest wartością false, więc JavaScript pominie drugą część.

Jeśli prawdą jest, że w dalszym ciągu i zwraca Bootloader.done(...).

Potraktujcie to jako skrót dla if(window.Bootloader) { Bootloader.done(...) }

2

również & & operator zwraca pierwszy napotkany wartość tego rodzaju: zerową, nieokreślonym, 0, fałszywego, NaN ""

ex: jeśli

var1 = 33 
var2 = 0 
var3 = 45 

var1 && var2 && var3 
returns 0 
Powiązane problemy