Логические операторы
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
, и правый в остальных случаях.
const num = 20;
const result = num > 10 && num < 30;
console.log(result); // true
В коде выше мы проверяем условие: переменная num
больше 10
и меньше 30
. Так как оба условия вернут true
, то и результатом всего выражения будет true
.
Для того чтобы оператор &&
вернул true
, требуется чтобы все операнды были истинными (truthy). Если хотя бы один из операндов будет приведен к false
, то результатом выражения будет этот операнд.
const num = 40;
const result = num > 10 && num < 30;
console.log(result); // false
2.2. Логическое «ИЛИ»
Оператор ||
возвращает одно из значений (операндов). Левый операнд если его можно привести к true
, и правый в остальных случаях.
const num = 5;
const result = num < 10 || num > 30;
console.log(result); // true
Это тоже будет true
так как хотя бы один из операндов был приведен к true
.
const num = 40;
const result = num < 10 || num > 30;
console.log(result); // true
А тут ни одно из условий не выполняется, поэтому получаем false
.
const num = 20;
const result = num < 10 || num > 30;
console.log(result); // false
2.3. Логическое «НЕ»
Оператор !
приводит операнд к булю, если необходимо, а затем заменяет его на противоположный.
// Some codeconsole.log(!true); // false
console.log(!false); // true
console.log(!1); // false
console.log(!0); // true
2.4. Порядок вычисления
При выполнении логических операций, правый операнд может не вычисляться.

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