3 логических оператора в JavaScript

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

Логические операторы важны в JavaScript, потому что они позволяют сравнивать переменные и делать что-то на основе результата этого сравнения.
Javascript Logical Operator
Например, если результат сравнения true, вы выполняете блок кода; если false, вы выполняете еще один блок кода.

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

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

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

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

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

let eligible = false,
 required = true;

 console.log(!eligible);
 console.log(!required);

Выход:

true
false

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

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

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

!a

! оператор работает по следующим правилам:

  • Если a не undefined, результатом будет true.
  • Если a равно null, результат будет true.
  • Если a является числом, отличным от 0, результат будет false.
  • Если a равно NaN, результат будет true.
  • Если a равно null, результат будет 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

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

Иногда в коде можно увидеть двойное отрицание( !! ). !! дважды использует логический оператор НЕ( !), чтобы преобразовать значение в его реальное логическое значение. Результат такой же, как и при использовании функции Boolean(). Например:

let counter = 10; 
console.log(!!counter); // true

Первый ! оператор возвращает значение переменной- counter. И второй ! отрицает этот результат и возвращает реальное значение переменной- counter.

2) Оператор AND( && )

JavaScript использует двойной амперсанд( && ) для представления оператора И.

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

let result = a && b;

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

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

aba && b
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

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

let eligible = false, 
required = true;
 
console.log(eligible && required); // false

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

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

let eligible = true, 
required = true; 

console.log(eligible && required); // true

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

По короткой схеме

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

let b = true; 
let result = b &&(1 / 0); 
console.log(result);

Выход:

Infinity

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

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

let b = false; 
let result = b &&(1 / 0); 
console.log(result);

Выход:

false

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

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

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

let result = value1 && value2 && value3;

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

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

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

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

3) Логический оператор OR( || )

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

let result = a || b;

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

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

аbа || b
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

|| оператор возвращает false, если оба значения оцениваются как false. В случае, если значение равно , || оператор возвращает true. Например:

let eligible = true, 
required = false; 

console.log(eligible || required); // true

Следующее выражение применяет || оператор к двум нелогическим значениям:

В этом примере подходящие || required возвращает true, потому что одно из значений( required ) истинно. См. другой пример:

let eligible = false, 
required = false; 

console.log(eligible || required); // false

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

|| оператор также short-circuit

Подобно оператору &&, || также оператор короткой схемы. Это означает, что если первое значение оценивается как true, оператор || не оценивает второе.

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

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

let result = value1 || value2 || value3;

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

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

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

Приоритет

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

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

  1. NOT(!)
  2. AND(&&)
  3. OR(||)

Заключение

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

Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript