Логические операторы

1. Двоичная логика

Любая программа может быть создана на основе нескольких принципов: последовательности выполнения и ветвлений.

Последовательность выполнения — следование записи кода сверху вниз. Но не всегда программа должна выполняться строго последовательно. Для изменения последовательности используются циклы и ветвления.

Ветвление — возможность выполнить ту или иную последовательность кода в зависимости от условия. Условие может быть любым, но результат его проверки всегда будет одним из двух значений true или false.

Компьютер использует бинарный (от латинского bis - дважды) код. Т.е. всего два значения используются для создания любых программ: 0 и 1. Это значит, что условия также задаются в виде 0 (нет, false) и 1 (да, true).

В математике существует раздел булевой логики, в котором условия бинарны, т.е. могут быть представлены в виде 0 и 1, а также в виде слов true и false. Именно эта логика используется для реализации ветвления.

1.1. Приведение типов

Для того чтобы работала булева логика необходимо на входе иметь два значения. Поэтому в JavaScript, в логических операциях, осуществляется приведение типов операндов к true или false. Приведение происходит если в коде обнаружен логический оператор.

Truthy и Falsy — термины, которые используются для тех значений, которые, в логической операции, приводятся к true или false, хотя изначально не были булями.

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