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