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

05 Js Boolean Logical Operators

aba && ba || b! a
falsefalsefalsefalsetrue
falsetruefalsetruetrue
truefalsefalsetruefalse
truetruetruetruefalse

Давайте представим себе пример из жизни: мы ищем на сайте все статьи, которые мы опубликовали и комментировали. Должны быть два совпадения — это вариант 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 лучше читается и воспринимается. Он более очевиден, поэтому лучше использовать его. Это, впрочем, относится и к другим неочевидным применениям возможностей языка.

! (НЕ)

Оператор НЕ – самый простой. Он получает один аргумент. Синтаксис:

Действия !:

  1. Сначала приводит аргумент к логическому типу true/false.
  2. Затем возвращает противоположное значение.

Например:

В частности, двойное НЕ используют для преобразования значений к логическому типу:

логических операторов 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 90 105 <
Операция сравнения Символ оператора Пример
Равен ==
Равное значение и равный тип === a === b
Не равно != a != b
Больше > a > b
Меньше a < b
Больше или равно- до >= a >= b
Меньше или равно <= a <= b 90 106

Учебные пособия

Следующие учебные пособия по JavaScript охватывают каждый этих операторов сравнения в деталях.

  • Оператор "равно" в JavaScript
  • Оператор "равно" в JavaScript
  • Оператор "не равно" в JavaScript
  • Оператор "больше" в JavaScript
  • Оператор "меньше" в JavaScript
  • Оператор "больше или равно" в JavaScript
  • JavaScript Меньше или равно Оператор

Пример

В следующем примере мы берем два значения и выполняем разные операции сравнения над этими значениями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *