&& оператор в Javascript

При просмотре кода (javascript) я нашел этот фрагмент кода:

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

То, что я не понимаю, это то, что делает &&, код из Facebook и, очевидно, ограничен и/или запутан, но он все равно делает то же самое.

tl; dr: Что делает оператор && здесь?

Ответы

Ответ 1

&& гарантирует, что функция/объект Bootloader существует до вызова метода done на нем. В коде используется логическое короткое замыкание для обеспечения того, чтобы первое выражение оценивалось как true до выполнения второго. Более подробное объяснение можно найти в в описании короткого замыкания wikipedia.

Ответ 2

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

он эквивалентен:

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

Ответ 3

&& является оператором AND, как и везде. В этом нет ничего необычного.

Большинство языков, включенных в JavaScript, перестанут оценивать оператор AND, если первый операнд является ложным.

В этом случае, если window.Bootloader не существует, он будет undef, который оценивается как false, поэтому JavaScript пропустит вторую часть.

Если это правда, оно продолжается и вызывает Bootloader.done(...).

Подумайте об этом как ярлыке для if(window.Bootloader) { Bootloader.done(...) }

Ответ 4

также && оператор возвращает первое найденное значение такого типа: null, undefined, 0, false, NaN, ""

например: если

var1 = 33
var2 = 0 
var3 = 45

var1 && var2 && var3
returns 0