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