JavaScript
  • 🧑‍💻Full-Stack Web Developer
  • 📚Теорія
    • 1️⃣Змінні і типи
      • Знайомство з JavaScript
      • Інструменти розробника
      • Підключення скрипту
      • Основи синтаксису
      • Змінні і типи
      • Взаємодія з користувачем
      • Основні оператори
      • Числа
      • Рядки
      • Логічні операції
    • 2️⃣Розгалудження і цикли
      • Розгалуження
      • Тернарний оператор
      • Інструкція switch
      • Область видимості
      • Цикли
    • 3️⃣Масиви
      • Масиви
      • Ітерація по масиву
      • Присвоєння за посиланням і значенням
      • Методи масиву
    • 4️⃣Функції
      • Функції
      • Стек викликів
    • 5️⃣Обʼєкти
      • Обʼєкти
      • Перебирання обʼєкта
      • Масив обʼєктів
      • Операції spread і rest
      • Деструктуризація обʼєктів
      • Деструктуризація масивів
      • Паттерн "обʼєкт параметрів"
    • 6️⃣Колбек-функції, стрілкові функції, перебір масиву
      • Колбек-функції
      • Метод forEach
      • Стрілкові функції
      • Підходи до написання коду
      • Чисті функції
    • 7️⃣Перебираючі методи масивів
      • Перебираючі методи масиву
      • Метод map()
      • Метод flatMap()
      • Метод filter()
      • Метод find()
      • Метод findIndex()
      • Методи every() і some()
      • Метод reduce()
      • Метод sort()
      • Ланцюжки методів
    • 8️⃣Контекст, прототипи та класи
      • Контекст виконання функції
      • Правила визначення this
      • Методи функцій
      • Об'єктно-орієнтоване програмування
      • Прототипне наслідування
    • Класи
  • 👷Практика
    • 👷Практика
    • Page 1
  • Про мене
    • Про мене
Powered by GitBook
On this page
  • Приведення типів​
  • Логічне «І»​
  • Логічне «АБО»​
  • Додаткові матеріали​
  1. Теорія
  2. Змінні і типи

Логічні операції

PreviousРядкиNextРозгалудження і цикли

Last updated 1 year ago

JavaScript підтримує різні логічні операції для роботи з булевими значеннями (true або false). Основні логічні операції включають && (логічне І), || (логічне АБО) та ! (логічне НІ).

Приведення типів

У логічних операціях відбувається приведення типів операндів. Тобто операнд постає як true або false. Тільки-но інтерпретатор бачить логічний оператор, то робить приведення типів, навіть якщо операнд спочатку не був булем.

До false у логічному вираженні приводяться такі значення: 0, NaN, null, undefined, порожній рядок і false. Ві інші значення приводяться до true.

Логічне «І»

В JavaScript логічне "І" позначається оператором &&.

вираз && вираз

Цей оператор використовується для визначення, чи обидва операнди є true. Якщо обидва операнди true, то вираз виконується як true, в іншому випадку результат є false.

true && true = true // математичне розуміння: 1 && 1 = 1
false && true = false // математичне розуміння: 0 && 1 = 0
true && false = false // математичне розуміння: 1 && 0 = 0
false && false = false // математичне розуміння: 0 && 0 = 0

Але насправді в 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);

a > b тобто 20 > 10 це правда true

b < c тобто 10 < 5 це хиба false

Як результат: true && false -> false

Трохи більше прикладів:

console.log(3 && 2); // true && true -> 2
console.log(2 && 3); // true && true -> 3
console.log(0 && 7); // false && true -> 0
console.log(5 && 0); // true && false -> 0
console.log("" && "string"); // false && true -> ""
console.log("string" && ""); // true && false -> ""
console.log("first_string" && "second_string"); // true && true -> "second_string"

В JavaScript, логічне "АБО" позначається оператором ||.

вираз || вираз

Цей оператор використовується для визначення, чи хоча б один із операндів є true. Якщо хоча б один з операндів є true, то вираз виконується як true. Якщо обидва операнди є false, результат є false.

true || true = true // математичне розуміння: 1 || 1 = 1
false || true = true // математичне розуміння: 0 || 1 = 1
true || false = true // математичне розуміння: 1 || 0 = 1
false || false = false // математичне розуміння: 0 || 0 = 0

Але насправді в 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

a > b тобто 7 > 10 це хиба false

b < c тобто 10 < 5 це хиба false

Як результат: false || false -> false

Трохи більше прикладів:

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

В JavaScript, логічне "НЕ" позначається оператором !. Цей оператор використовується для зміни булевого значення операнду на протилежне. Якщо операнд був true, він стає false, і навпаки.

!вираз

Це унарний оператор, тобто викорує операцію над одним операндрм.

console.log(!true); // false
console.log(!false); // true
console.log(!5); // !5 -> !true -> false
console.log(!"string"); // !"string" -> !true -> false
console.log(!0); // !0 -> !false -> true
console.log(!""); // !"" -> !false -> true

Логічне «АБО»

Логічне «НЕ»

Додаткові матеріали

📚
1️⃣
​
​
​
​
​
Logic Gates Explained (video)