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