Логічне І (&&)

Логічний оператор І (&&) (логічна кон'юнкція) для набору операндів дорівнює true тільки тоді, коли усі його операнди дорівнюють true. Він зазвичай використовується з булевими (логічними) значеннями. У цьому випадку він повертає булеве значення. Однак, оператор && насправді повертає значення одного з наданих операндів, а отже, якщо цей оператор застосовується не з булевими значеннями, він поверне не булеве значення.

Синтаксис

вираз1 && вираз2

Опис

Якщо вираз1 може бути приведений до true, вертає вираз2; інакше, вертає вираз1.

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

Прикладами виразів, які можуть бути приведені до false, є:

  • null;
  • NaN;
  • 0;
  • порожній рядок ("" або '', або ``);
  • undefined.

Хоча оператори && та || можуть використовуватись з операндами не булевого типу, вони все одно можуть вважатися булевими операторами, оскільки значення, які вони повертають, завжди можуть бути приведені до булевих примітивів. Щоб явно перетворити повернені значення (або, взагалі, будь-який вираз) до відповідного булевого значення, скористайтесь подвійним оператором НЕ або конструктором Boolean.

Обчислення з коротким замиканням

Логічні вирази І обчислюються зліва направо, вони перевіряються на можливе "коротке замикання" під час обчислення за наступним правилом:

(якийсь хибний вираз) && expr обчислюється як хибний вираз;

Коротке замикання означає, що частина expr у прикладі не обчислюється, тому будь-які побічні ефекти від цього не відбудуться (наприклад, якщо expr є викликом функції, виклику не станеться). Це відбувається тому, що значення оператора вже визначене після обчислення першого операнду. Дивіться приклад:

function A(){ console.log('викликано A'); return false; }
function B(){ console.log('викликано B'); return true; }

console.log( A() && B() );
// виводить "викликано A" в результаті виклику функції,
// потім виводить false (що є результатом виклику оператора)

Пріоритет операторів

Наступні вирази можуть виглядати еквівалентними, але це не так, оскільки оператор && виконується перед оператором || (дивіться Пріоритет операторів).

true || false && false      // вертає true, оскільки && виконується першим
(true || false) && false    // вертає false, бо пріоритет операторів не застосовується

Приклади

Використання І

Наступний код наводить приклади оператора && (логічне І).

a1 = true  && true       // t && t вертає true
a2 = true  && false      // t && f вертає false
a3 = false && true       // f && t вертає false
a4 = false && (3 == 4)   // f && f вертає false
a5 = 'Кіт' && 'Пес'      // t && t вертає "Пес"
a6 = false && 'Кіт'      // f && t вертає false
a7 = 'Кіт' && false      // t && f вертає false
a8 = ''    && false      // f && f вертає ""
a9 = false && ''         // f && f вертає false

Правила перетворення для булевих значень

Перетворення І на АБО

Наступна операція з булевими значеннями:

bCondition1 && bCondition2

завжди дорівнює:

!(!bCondition1 || !bCondition2)

Перетворення АБО на І

Наступна операція з булевими значеннями:

bCondition1 || bCondition2

завжди дорівнює:

!(!bCondition1 && !bCondition2)

Прибирання вкладених дужок

Оскільки логічні вирази обчислюються зліва направо, завжди можна прибрати дужки зі складного виразу, дотримуючись певних правил.

Наступна складена операція з булевими значеннями:

bCondition1 || (bCondition2 && bCondition3)

завжди дорівнює:

bCondition1 || bCondition2 && bCondition3

Специфікації

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також