Ответ 1
&
побитовое значение AND
Этот оператор ожидает двух чисел и перенастроит число .. Если они не являются числами, они передаются в числа.
Как это работает? У Википедии есть ответ: https://en.wikipedia.org/wiki/Bitwise_operation#AND
Примечание.. В Javascript использование этого оператора обескуражено, поскольку нет целочисленного типа данных, только с плавающей запятой. Таким образом, поплавки преобразуются в целые числа до каждой операции, что замедляет работу. Кроме того, он не имеет реального использования в типичных веб-приложениях и создает нечитаемый код.
Общее правило: Избегайте. Не используйте его. Он редко имеет место в поддерживаемом и читаемом JS-коде.
&&
является логическим И
Он ожидает два аргумента и возвращает:
- Первый термин, который вычисляет false
- Последний термин в противном случае (если все true-y)
Вот несколько примеров:
0 && false 0 (both are false-y, but 0 is the first)
true && false false (second one is false-y)
true && true true (both are true-y)
true && 20 20 (both are true-y)
Это определение соответствует определению логического и математического поля.
&&
цепочка операторов
Причина, по которой этот оператор определен выше, - это цепочка операторов. Вы можете связать этого оператора и все еще придерживаться вышеуказанных правил.
true && 20 && 0 && 100 0 (it is the first false-y)
10 && 20 && true && 100 100 (last one, since all are true-y)
&&
короткое замыкание
Как видно из определения, как только вы обнаружите, что один термин является false-y, вам не нужно заботиться о следующих терминах. Javascript даже делает это более заметным, термины даже не оцениваются. Это называется коротким замыканием.
true && false && alert("I am quiet!")
Этот оператор ничего не предупреждает и возвращается false
. Поэтому вы можете использовать оператор &&
как более короткую замену для оператора if. Они эквивалентны:
if (user.isLoggedIn()) alert("Hello!")
user.isLoggedIn() && alert("Hello!")
Почти все компрессоры JS используют этот трюк, чтобы сохранить 2 байта.