05 Js Boolean Logical Operators
| a | b | a && b | a || b | ! a |
|---|---|---|---|---|
| false | false | false | false | true |
| false | true | false | true | true |
| true | false | false | true | false |
| true | true | true | true | false |
Давайте представим себе пример из жизни: мы ищем на сайте все статьи, которые мы опубликовали и комментировали. Должны быть два совпадения — это вариант a && b. Или мы ищем все статьи, в которых есть упоминание слов “алгебра” или “математика” — это a || b. А отыскать все статьи, которые написаны не нами, можно, применив логический оператор !a. Стать исключительно космонавтом, но не медиком — это a && !b
Это так называемые булевы или логические операции.
С помощью таблицы с результатами логических операций можно перепроверить работу JS:
Логические операторы, которые поддерживаются JS #
| Логический операторы | Значение |
|---|---|
| == | Проверка с приведением к общему типу на соответствие (допустим, что a равен b) |
| === | Проверка на соответствие (допустим, что a равен b) |
| = | ПРИСВОИТЬ (a присвоим 7) |
| != | Не равно (если a не равно b, то) |
| ! | Отрицание, логическое не |
| && | Логическое И, and |
| || | Логическое или, or |
Дизъюнкция #
Когда мама ИЛИ папа дают мне деньги на карманные расходы, то я бегу и покупаю себе мороженное.
Знакомая ситуация, деньги можно получить в трёх случах из четырёх. В одном случае же деньги может дать и мама, и папа, тогда и друга можно угостить мороженным.
Это дизъюнкция.
Дизъюнкция — логическое сложение, логическое ИЛИ, включающее или, просто “или”(англ. OR; нем. ODER) В JS оператор «||»
let a = false, b = true, c; c = a || b;
Пример в технике; дублирование выключателя или кнопки, дверной звонок и звонок у калитки вызывают одну и туже реакцию — включается мелодия звонка.
В учебниках можно встретить обозначение “больше либо равно единице” — =>1.
Конъюнкция #
Конъюнкция — логическое “И”, логическое умножение, просто “И”, “AND”, «&».
В JS оператор «&&».
let a = false, b = true, c; c = a && b;
Если светит солнце “И” у меня выходной, то я иду купаться на озеро.
Пример из жизни. Ядерный чемоданчик могут активировать только два офицера одновременно. По отдельности чемодан остаётся неактивным.
Амперсанд — это название знака &.
Пайп (pipeline), Вертикальная черта — это название знака |.
=== — equals.
Мы ещё раз рассмотрим данные операторы позже. Пока мы должны понимать, что с арифметическими операторами всё немного сложнее, чем хотелось бы.
Логические операторы
Для операций над логическими значениями в JavaScript есть || (ИЛИ), && (И) и ! (НЕ).
Хоть они и называются «логическими», но в JavaScript могут применяться к значениям любого типа и возвращают также значения любого типа.
|| (ИЛИ)
Оператор ИЛИ выглядит как двойной символ вертикальной черты:
Логическое ИЛИ в классическом программировании работает следующим образом: «если хотя бы один из аргументов true, то возвращает true, иначе – false«.
В JavaScript, как мы увидим далее, это не совсем так, но для начала рассмотрим только логические значения.
Получается следующая «таблица результатов»:
Если значение не логического типа – то оно к нему приводится в целях вычислений. Например, число 1 будет воспринято как true, а 0 – как false:
Обычно оператор ИЛИ используется в if, чтобы проверить, выполняется ли хотя бы одно из условий, например:
Можно передать и больше условий:
Короткий цикл вычислений
JavaScript вычисляет несколько ИЛИ слева направо. При этом, чтобы экономить ресурсы, используется так называемый «короткий цикл вычисления».
Допустим, вычисляются несколько ИЛИ подряд: a || b || c || .... Если первый аргумент – true, то результат заведомо будет true (хотя бы одно из значений – true), и остальные значения игнорируются.
Это особенно заметно, когда выражение, переданное в качестве второго аргумента, имеет сторонний эффект – например, присваивает переменную.
При запуске примера ниже присвоение x не произойдёт:
…А в примере ниже первый аргумент – false, так что ИЛИ попытается вычислить второй, запустив тем самым присваивание:
Значение ИЛИ
||запинается на «правде»,&&запинается на «лжи».
Итак, как мы видим, оператор ИЛИ вычисляет ровно столько значений, сколько необходимо – до первого true.
При этом оператор ИЛИ возвращает то значение, на котором остановились вычисления. Причём, не преобразованное к логическому типу.
Например:
Это используют, в частности, чтобы выбрать первое «истинное» значение из списка:
Если все значения «ложные», то || возвратит последнее из них:
Итак, оператор || вычисляет операнды слева направо до первого «истинного» и возвращает его, а если все ложные – то последнее значение.
Иначе можно сказать, что «|| запинается на правде».
&& (И)
Оператор И пишется как два амперсанда &&:
В классическом программировании И возвращает true, если оба аргумента истинны, а иначе – false:
Пример с if:
Как и в ИЛИ, в И допустимы любые значения:
К И применим тот же принцип «короткого цикла вычислений», но немного по-другому, чем к ИЛИ.
Если левый аргумент – false, оператор И возвращает его и заканчивает вычисления. Иначе – вычисляет и возвращает правый аргумент.
Например:
Можно передать и несколько значений подряд, при этом возвратится первое «ложное» (на котором остановились вычисления), а если его нет – то последнее:
Итак, оператор && вычисляет операнды слева направо до первого «ложного» и возвращает его, а если все истинные – то последнее значение.
Иначе можно сказать, что «&& запинается на лжи».
Приоритет оператора И && больше, чем ИЛИ ||, так что он выполняется раньше.
Поэтому в следующем коде сначала будет вычислено правое И: 1 && 0 = 0, а уже потом – ИЛИ.
Оператор && в простых случаях можно использовать вместо if, например:
Действие в правой части && выполнится только в том случае, если до него дойдут вычисления. То есть, alert сработает, если в левой части будет true.
Получился аналог:
Однако, как правило, вариант с if лучше читается и воспринимается. Он более очевиден, поэтому лучше использовать его. Это, впрочем, относится и к другим неочевидным применениям возможностей языка.
! (НЕ)
Оператор НЕ – самый простой. Он получает один аргумент. Синтаксис:Действия !:
- Сначала приводит аргумент к логическому типу
true/false. - Затем возвращает противоположное значение.
Например:
В частности, двойное НЕ используют для преобразования значений к логическому типу:
логических операторов JavaScript и новый нулевой оператор объединения – clubmate.
fiлогических оператора JavaScript и новый нулевой оператор объединения новейшее дополнение к семейству логических операторов JavaScript. Он был опубликован в 2020 году.
В JavaScript есть три разных логических оператора: И && , ИЛИ || , а затем нулевой оператор объединения ?? , что-то вроде оператора ИЛИ, но немного умнее.
Резюме логических операторов
Оператор И требует, чтобы обе стороны условия были одинаковыми, чтобы он оценивался как истина:
console.log(true && true) // true
console.log(true && false) // ложь
console.log(false && false) // ложь
console.log(null && false) // ноль
console.log(null && true) // ноль
console.log(0 && ложь) // 0
console.log(0 && правда) // 0
console.log('' && false) // ''
console.log('' && правда) // ''
console.log(NaN && false) // NaN
console.log(NaN && true) // NaN Оператор AND сохраняет небулевы значения и возвращает их как есть. Например, null и 0 , , NaN .
Оператор ИЛИ работает практически противоположным образом, обе стороны должны быть ложными, чтобы он мог оценить
console.log(true || false) // правда
console.log(ложь || ложь) // ложь
console.log(null || ложь) // ложь
console.log(null || правда) // правда
console.log(0 || ложь) // ложь
console.log(0 || правда) // правда
console.log(» || ложь) // ложь
console.log(» || правда) // правда
console.log(NaN || ложь) // ложь
console.log(NaN || true) // правда Нулевой оператор объединения ( Нулевой оператор объединения похож на ИЛИ, но он обрабатывает Нулевой оператор объединения
?? ) — это логический оператор, который возвращает свой правый операнд, когда его левый операнд равен null или undefined , и в противном случае возвращает свой левый операнд. '' 0 и NaN как неложные, и это, по сути, единственное различие между ИЛИ и нулевым объединением.
console.log(true ?? true) // правда
console.log(true ?? false) // правда
console.log(ложь ?? ложь) // ложь
console.log(null ?? ложь) // ложь
console.log(null ?? true) // правда
console.log(0 ?? Ложь) // 0
console.log(0 ?? правда) // 0
console.log('' ?? false) // ''
console.log('' ?? true) // ''
console.log(NaN ?? false) // NaN
console.log(NaN ?? true) // NaN ?? следует использовать, если '' , 0 или NaN считаются допустимыми значениями.
Выводы
Теперь, когда большинство браузеров основаны на Chromium, браузер поддерживает ?? уже неплохо. 92,14% по всему миру на момент написания этой статьи.
Операторы сравнения JavaScript — TutorialKart
Операторы сравнения JavaScript — TutorialKartОператоры сравнения JavaScript
Операторы сравнения JavaScript используются для сравнения двух значений, например, если они равны или не равны, больше другого или меньше другого и т.
д.
Оператор сравнения — символ — пример
JavaScript поддерживает следующие операторы сравнения.
| Операция сравнения | Символ оператора | Пример |
|---|---|---|
| Равен | == | 9 0105|
| Равное значение и равный тип | === | a === b |
| Не равно | != | a != b |
| Больше | > | a > b |
| Меньше | 90 105 < a < b | |
| Больше или равно- до | >= | a >= b |
| Меньше или равно | <= | a <= b 90 106 |
Учебные пособия
Следующие учебные пособия по JavaScript охватывают каждый этих операторов сравнения в деталях.
- Оператор "равно" в JavaScript
- Оператор "равно" в JavaScript
- Оператор "не равно" в JavaScript
- Оператор "больше" в JavaScript
- Оператор "меньше" в JavaScript
- Оператор "больше или равно" в JavaScript
- JavaScript Меньше или равно Оператор
Пример
В следующем примере мы берем два значения и выполняем разные операции сравнения над этими значениями.


