&& оператор в 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