У 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