Логічні оператори JS

У JavaScript є чотири логічні оператори: || (АБО), && (І), ! (НЕ), ?? (оператор нульового злиття). Ці оператори можуть бути застосовані до значень будь-якого типу, не тільки булевих, та їх результати також можуть бути будь-якого типу.

Оператор || (АБО)

Оператор || працює наступним чином:

  • Обчислює операнди зліва направо
  • Приводить значення кожного операнда до булевого типу. Якщо результат true, зупиняється і повертає початкове значення цього операнда
  • Якщо всі операнди були обчисленні і всі повернули false, повертає останній операнд

Ланцюжок з оператором || повертає перше правдиве значення або останнє, якщо правдивого значення не знайдено. У даного оператора є чотири логічні комбінації. false буде повернута тільки у випадку коли всі операнди дорівнюють false.

console.log(true || true); // true
console.log(false || true); // true
console.log(true || false); // true
console.log(false || false); // false

Якщо операнд не є булевим, він приводиться до булевого типу для обчислення. Наприклад, число 1 розглядається як true, число 0 — як false , але значення повертається у первісному вигляді без конвертації.Помилка

console.log(1 || 0); // 1 (1 є першим правдивим значенням)
console.log(null || 1); // 1 (1 є першим правдивим значенням)
console.log(null || 0 || 1); // 1 (перше правдиве значення)
console.log(undefined || null || 0); // 0 (усі хибні, повертається останнє значення)

Оператор && (І)

Оператор && повертає true, якщо обидва оператори є правдивими, і false в іншому випадку. У даного оператора є чотири логічні комбінації. true буде повернута тільки у випадку коли всі операнди дорівнюють true.Помилка

console.log(true && true); // true
console.log(false && true); // false
console.log(true && false); // false
console.log(false && false); // false

Оператор && працює наступним чином:

  • Обчислює операнди зліва направо
  • Приводить значення кожного операнда до булевого типу. Якщо результат false, зупиняється і повертає початкове значення того операнда
  • Якщо всі операнди були обчисленні і всі повернули true, повертає останній операнд

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

console.log(1 && 2); // 2
console.log(null && 42); // null
console.log(0 && "test"); // 0
console.log(1 && 2 && null && 3); // null
console.log(1 && 2 && 3); // 3, останнє

Оператор ! (НЕ)

Оператор приймає один аргумент і виконує наступне:

  • Перетворює операнд на булевий тип true / false
  • Повертає зворотне значення.
console.log(!true); // false
console.log(!0); // true

Оператор ?? нульового злиття

Оператор?? дуже схожий на ||, але повертає перший аргумент, якщо він не null / undefined. Інакше кажучи, оператор || не розрізняє, чи значення false, 0, порожній рядок “” чи null / undefined. Всі вони однакові — хибні значення. Якщо будь-яке з них є першим аргументом ||, тоді ми отримаємо другий аргумент як результат.

console.log(0 || 100); // 100
console.log(0 ?? 100); // 0