Логічне НЕ (!)

Логічний оператор НЕ (!) (логічне доповнення, заперечення) перетворює правдивість на хибність та навпаки. Він зазвичай використовується з булевими (логічними) значеннями. При використанні з не булевими значеннями він вертає false, якщо його єдиний операнд може бути приведений до true; інакше, вертає true.

Синтаксис

!expr

Опис

Вертає false, якщо його єдиний операнд може бути приведений до true; інакше, вертає true.

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

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

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

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

Приклади

Використання НЕ

Наступний код демонструє приклади оператора ! (логічне НЕ).

n1 = !true               // !t вертає false
n2 = !false              // !f вертає true
n3 = !''                 // !f вертає true
n4 = !'Кіт'              // !t вертає false

Подвійне НЕ (!!)

Можна використовувати пару операторів НЕ поспіль, щоб явно викликати перетворення будь-якої величини на відповідний булевий примітив. Перетворення базується на "правдивості" або "хибності" значення (дивіться truthy та falsy).

Таке саме перетворення можна виконати функцією Boolean.

n1 = !!true                   // !!truthy вертає true
n2 = !!{}                     // !!truthy вертає true: будь-який об'єкт є правдивим...
n3 = !!(new Boolean(false))   // ...навіть об'єкти Boolean, в яких .valueOf() дорівнює false!
n4 = !!false                  // !!falsy вертає false
n5 = !!""                     // !!falsy вертає false
n6 = !!Boolean(false)         // !!falsy вертає false

Перетворення НЕ

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

!!bCondition

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

bCondition

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

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

BCD tables only load in the browser

Див. також