Логические операторы
1. Двоичная логика
Любая программа может быть создана на основе нескольких принципов: последовательности выполнения и ветвлений.
Последовательность выполнения — следование записи кода сверху вниз. Но не всегда программа должна выполняться строго последовательно. Для изменения последовательности используются циклы и ветвления.
Ветвление — возможность выполнить ту или иную последовательность кода в зависимости от условия. Условие может быть любым, но результат его проверки всегда будет одним из двух значений true или false.
Компьютер использует бинарный (от латинского bis - дважды) код. Т.е. всего два значения используются для создания любых программ: 0 и 1. Это значит, что условия также задаются в виде 0 (нет, false) и 1 (да, true).
В математике существует раздел булевой логики, в котором условия бинарны, т.е. могут быть представлены в виде 0 и 1, а также в виде слов true и false. Именно эта логика используется для реализации ветвления.
1.1. Приведение типов
Для того чтобы работала булева логика необходимо на входе иметь два значения. Поэтому в JavaScript, в логических операциях, осуществляется приведение типов операндов к true или false. Приведение происходит если в коде обнаружен логический оператор.
Truthy и Falsy — термины, которые используются для тех значений, которые, в логической операции, приводятся к true или false, хотя изначально не были булями.
Запомните 6 ложных (falsy) значений, приводящихся к false в логическом преобразовании: 0, NaN, null, undefined, пустая строка: "" или '', false. Абсолютно все остальное приводится к true.
2. Логические операторы
Есть три логических оператора, которые используются для проверки выполнения множественных выражений.

2.1. Логическое «И»
Оператор && приводит все операнды к булю и возвращает одно из значений (операндов). Левый операнд если его можно привести к false, и правый в остальных случаях.
В коде выше мы проверяем условие: переменная num больше 10 и меньше 30. Так как оба условия вернут true, то и результатом всего выражения будет true.
Для того чтобы оператор && вернул true, требуется чтобы все операнды были истинными (truthy). Если хотя бы один из операндов будет приведен к false, то результатом выражения будет этот операнд.
2.2. Логическое «ИЛИ»
Оператор || возвращает одно из значений (операндов). Левый операнд если его можно привести к true, и правый в остальных случаях.
Это тоже будет true так как хотя бы один из операндов был приведен к true.
А тут ни одно из условий не выполняется, поэтому получаем false.
2.3. Логическое «НЕ»
Оператор ! приводит операнд к булю, если необходимо, а затем заменяет его на противоположный.
2.4. Порядок вычисления
При выполнении логических операций, правый операнд может не вычисляться.

"Купить билет И отдохнуть" - если левый операнд "Купить билет" окажется false, то вычислять второй нет смысла.
"Отдохнуть ИЛИ сохранить деньги" - если левый операнд "Отдохнуть" окажется true, то вычислять второй нет смысла.
3. Дополнительные материалы
Last updated