Введение в логические операторы JavaScript

Краткое описание: в этом уроке вы узнаете, как использовать логические операторы JavaScript, включая логический оператор NOT ( !), логический оператор AND ( &&) и логический оператор OR ( ||).

Логические операторы важны в JavaScript, поскольку они позволяют сравнивать переменные и делать что-то на основе результата этого сравнения.

Например, если результат сравнения true, вы можете выполнить блок кода; если false, вы можете выполнить другой блок кода.

JavaScript предоставляет три логических оператора:

  • ! (логическое НЕ)
  • || (логическое ИЛИ)
  • && (логическое И).

1) Логический оператор NOT (!)

JavaScript использует восклицательный знак ! для обозначения логического оператора NOT. Оператор ! можно применять к одному значению любого типа, а не только к булеву значению.

Когда вы применяете оператор ! к булеву значению, ! возвращает true, если значение false и наоборот. Например:

let eligible = false, required = true; console.log(!eligible); console.log(!required);
Code language: JavaScript (javascript)

Вывод:

true false
Code language: JavaScript (javascript)

В этом примере eligible равно true, поэтому !eligible возвращает false. А поскольку required является true, !required возвращает false.

Когда вы применяете оператор ! к небулевому значению. Оператор ! сначала преобразует значение в булево значение, а затем отрицает его.

Следующий пример показывает, как использовать оператор !:

!a

Логический оператор ! работает по следующим правилам:

  • Если a является undefined, результатом будет true.
  • Если a является null, результатом будет true.
  • Если a — число, отличное от 0, результатом будет false.
  • Если aNaN, результатом будет true.
  • Если a — объект, результатом будет false.
  • Если a — пустая строка, результатом будет true. В случае, если a — непустая строка, результатом будет false.

Ниже показаны результаты применения логического оператора ! к небулевым значениям:

console.log(!undefined); // true console.log(!null); // true console.log(!20); //false console.log(!0); //true console.log(!NaN); //true console.log(!{}); // false console.log(!''); //true console.log(!'OK'); //false console.log(!false); //true console.log(!true); //false
Code language: JavaScript (javascript)

Двойное отрицание (!!)

Иногда в коде можно встретить двойное отрицание (!!). В !! дважды используется логический оператор NOT (!) для преобразования значения в его реальное булево значение.

Результат такой же, как и при использовании функции Boolean(). Например:

let counter = 10; console.log(!!counter); // true
Code language: JavaScript (javascript)

Первый оператор ! отрицает булево значение переменной counter. Если counter является true, то оператор ! делает его ложным и наоборот.

Второй оператор ! отрицает результат первого оператора ! и возвращает реальное булево значение переменной counter.

2) Логический оператор AND (&&)

JavaScript использует двойной амперсанд (&&) для представления логического оператора AND. В следующем выражении используется оператор &&:

let result = a && b;
Code language: JavaScript (javascript)

Если a может быть преобразовано в true, оператор && возвращает b; в противном случае он возвращает a. Фактически, это правило применяется ко всем булевым значениям.

Следующая таблица истинности иллюстрирует результат оператора &&, когда он применяется к двум булевым значениям:

a b a && b
истина истинно правда
истинно ложный false
ложный истинный false
false false false

Результат оператора && является истинным, только если оба значения true, в противном случае он false. Например:

let eligible = false, required = true; console.log(eligible && required); // false
Code language: JavaScript (javascript)

В данном примере eligible является false, поэтому значение выражения eligible && required является false.

См. следующий пример:

let eligible = true, required = true; console.log(eligible && required); // true
Code language: JavaScript (javascript)

В этом примере и eligible, и required являются true, поэтому значение выражения eligible && required равно true.

Оценка замыкания

Оператор && является короткозамкнутым. Это означает, что оператор && оценивает второе значение только в том случае, если первого не достаточно для определения значения выражения. Например:

let b = true; let result = b && (1 / 0); console.log(result);
Code language: JavaScript (javascript)

Вывод:

Infinity
Code language: JavaScript (javascript)

В данном примере b является true, поэтому оператор && не смог определить результат без дополнительной оценки второго выражения (1/0).

Результатом является Infinity, которое является результатом выражения (1/0). Однако:

let b = false; let result = b && (1 / 0); console.log(result);
Code language: JavaScript (javascript)

Вывод:

false
Code language: JavaScript (javascript)

В данном случае b равно false, оператору && не нужно оценивать второе выражение, поскольку он может определить конечный результат как false на основе значения первого значения.

Цепочка операторов &&

В следующем выражении используется несколько операторов &&:

let result = value1 && value2 && value3;
Code language: JavaScript (javascript)

Оператор && несет в себе следующее:

  • Оценивает значения слева направо.
  • Для каждого значения преобразует его в булево значение. Если результат false, останавливается и возвращает исходное значение.
  • Если все значения истинны, возвращает последнее значение.

Другими словами, оператор && возвращает первое ложное значение или последнее значение, если таковых не было найдено.

Если значение может быть преобразовано в true, оно называется истинностным значением. Если значение может быть преобразовано в false, то это так называемое ложное значение.

3) Оператор логического ИЛИ (||)

JavaScript использует двойную трубу || для представления оператора логического ИЛИ. Вы можете применить оператор || к двум значениям любого типа:

let result = a || b;
Code language: JavaScript (javascript)

Если a может быть преобразовано в true, возвращается a; иначе возвращается b. Это правило также применяется к булевым значениям.

Следующая таблица истинности иллюстрирует результат оператора || в зависимости от значения операндов:

a b a || b
истина истина истинно
истинно ложный истинный
ложный истинный истинный
false false false

Оператор || возвращает false, если оба значения равны false. В случае если одно из значений равно true, оператор || возвращает true. Например:

let eligible = true, required = false; console.log(eligible || required); // true
Code language: JavaScript (javascript)

Смотрите другой пример:

let eligible = false, required = false; console.log(eligible || required); // false
Code language: JavaScript (javascript)

В этом примере выражение eligible || required возвращает false, потому что оба значения false.

Оператор || также является замыкающим.

Как и оператор &&, оператор || является короткозамкнутым. Это означает, что если первое значение оценивается как true, оператор && не оценивает второе.

Цепочка операторов ||

Следующий пример показывает, как использовать несколько операторов || в выражении:

let result = value1 || value2 || value3;
Code language: JavaScript (javascript)

Оператор || делает следующее:

  • Оценивает значения слева направо.
  • Для каждого значения преобразует его в булево значение. Если результатом преобразования является true, останавливается и возвращает значение.
  • Если все значения были оценены как false, возвращается последнее значение.

Другими словами, цепочка операторов || возвращает первое истинное значение или последнее, если истинное значение не было найдено.

Старшинство логических операторов

Когда вы смешиваете логические операторы в выражении, движок JavaScript оценивает операторы в определенном порядке. Этот порядок называется старшинством оператора.

Другими словами, старшинство оператора — это порядок оценки логических операторов в выражении.

Приоритет логического оператора находится в следующем порядке от высшего к низшему:

  1. Логический NOT (!)
  2. Логическое И (&&)
  3. Логическое ИЛИ (||)

Резюме

  • Оператор NOT (!) отрицает булево значение. Оператор (!!) преобразует значение в его реальное булево значение.
  • Оператор AND (&&) применяется к двум булевым значениям и возвращает true, если оба значения истинны.
  • Оператор OR (||) применяется к двум булевым значениям и возвращает true, если один из операндов true.
  • Оба оператора && и || являются замыкающими. Они также могут применяться к небулевым значениям.
  • Приоритет логических операторов от высшего к низшему: !, && и ||.

Оцените статью
devanswers.ru
Добавить комментарий