JavaScript підтримує різні логічні операції для роботи з булевими значеннями (true або false). Основні логічні операції включають && (логічне І), || (логічне АБО) та ! (логічне НІ).
Приведення типів
У логічних операціях відбувається приведення типів операндів. Тобто операнд постає як true або false. Тільки-но інтерпретатор бачить логічний оператор, то робить приведення типів, навіть якщо операнд спочатку не був булем.
До false у логічному вираженні приводяться такі значення: 0, NaN, null, undefined, порожній рядок і false. Ві інші значення приводяться до true.
Логічне «І»
В JavaScript логічне "І" позначається оператором &&.
вираз && вираз
Цей оператор використовується для визначення, чи обидва операнди є true. Якщо обидва операнди true, то вираз виконується як true, в іншому випадку результат є false.
Але насправді в JavaScript логічне "І" повертає значення одного із операндів. Лівий операнд - якщо його можна привести до false, і правий - в інших випадках.
Кажуть, що логічне "І" (&&) "спотикається" на хибі (false). Тобто повертає перший операнд який приводиться до false і далі не робить операцію. Якщо ж всі операнди приводяться до правди (true), то повертається останній операнд.
// "Спотикається" на null, який приводиться до false і повертає null
console.log("Result: ", null && undefined && "hello");
// Пропускає "1" і "спотикається" на undefined який приводиться до false
// повертає undefined
console.log("Result: ", 1 && undefined && null && "hello"); // undefined
// Всі операнди приводяться до true - повертається останній true
console.log("Result: ", 123 && true && "hello"); //hello
Логічне "І" також можна використовувати в складних умовах:
let a = 20;
let b = 10;
let c = 15;
console.log("Result: ", a > b && b < c); // true
Тут, a > b тобто 20 > 10 це правда true
b < c тобто 10 < 15 це правда true
Як результат: true && true -> true
Якби хоч одне значення привелося до false, результатом виразу було б false.
let a = 20;
let b = 10;
let c = 5;
console.log("Result: ", a > b && b < c);
В JavaScript, логічне "АБО" позначається оператором ||.
вираз || вираз
Цей оператор використовується для визначення, чи хоча б один із операндів є true. Якщо хоча б один з операндів є true, то вираз виконується як true. Якщо обидва операнди є false, результат є false.
Але насправді в JavaScript логічне "АБО" повертає значення одного із операндів. Лівий операнд - якщо його можна привести до true, і правий - в інших випадках.
Кажуть, що логічне "АБО" (||) "спотикається" на правді (true). Тобто повертає перший операнд який приводиться до true і далі не робить операцію. Якщо ж всі операнди приводяться до хиби (false), то повертається останній операнд.
// "Спотикається" на "first string", який приводиться до true
// і повертає "first string"
console.log("Result: ", "first string" || null || undefined); // "first string"
// Пропускає null і undefined і "спотикається" на "second string",
// який приводиться до true і повертає "second string"
console.log("Result: ", null || undefined || "second string" || null); //"second string"
// Всі приводяться до false і повертається останній операнд
console.log("Result: ", false || undefined || null); // null
Логічне "АБО" можна використовувати в складних умовах:
let a = 20;
let b = 10;
let c = 5;
console.log("Result: ", a > b || b < c); // true
a > b тобто 20 > 10 це правда true
b < c тобто 10 < 5 це хиба false
Як результат: true || false -> true
Якщо хоч одне значення привелося до true, результатом виразу буде true. Якщо всі операнди false, то результатом буде теж false.
let a = 7;
let b = 10;
let c = 5;
console.log("Result: ", a > b || b < c); // true
В JavaScript, логічне "НЕ" позначається оператором !. Цей оператор використовується для зміни булевого значення операнду на протилежне. Якщо операнд був true, він стає false, і навпаки.
!вираз
Це унарний оператор, тобто викорує операцію над одним операндрм.