--- 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")}}