--- title: Логічне НЕ (!) slug: Web/JavaScript/Reference/Operators/Logical_NOT tags: - JavaScript - Довідка - Логічний оператор - Оператор translation_of: Web/JavaScript/Reference/Operators/Logical_NOT ---
Логічний оператор НЕ (!) (логічне доповнення, заперечення) перетворює правдивість на хибність та навпаки. Він зазвичай використовується з {{jsxref("Boolean", "булевими")}} (логічними) значеннями. При використанні з не булевими значеннями він вертає false, якщо його єдиний операнд може бути приведений до true; інакше, вертає true.
!expr
Вертає false, якщо його єдиний операнд може бути приведений до true; інакше, вертає true.
Якщо значення може бути приведене до true, воно є так званим {{Glossary("truthy","правдивим")}} значенням. Якщо значення може бути приведене до false, воно називається {{Glossary("falsy","хибним")}}.
Прикладами виразів, які можуть бути приведені до false, є:
null;NaN;0;"" або '', або ``);undefined.Хоча оператор ! може використовуватись з операндами не булевого типу, він все одно вважатиметься булевим оператором, оскільки значення, яке він вертає, завжди може бути приведене до булевого примітиву. Щоб явно перетворити повернені значення (або, взагалі, будь-який вираз) до відповідного булевого значення, скористайтесь подвійним оператором НЕ або конструктором {{jsxref("Global_Objects/Boolean/Boolean", "Boolean")}}.
Наступний код демонструє приклади оператора ! (логічне НЕ).
n1 = !true // !t вертає false n2 = !false // !f вертає true n3 = !'' // !f вертає true n4 = !'Кіт' // !t вертає false
!!)Можна використовувати пару операторів НЕ поспіль, щоб явно викликати перетворення будь-якої величини на відповідний булевий примітив. Перетворення базується на "правдивості" або "хибності" значення (дивіться {{Glossary("truthy")}} та {{Glossary("falsy")}}).
Таке саме перетворення можна виконати функцією {{jsxref("Global_Objects/Boolean/Boolean", "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
| Специфікація |
|---|
| {{SpecName('ESDraft', '#sec-logical-not-operator', 'Logical NOT expression')}} |
{{Compat("javascript.operators.logical_not")}}