This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Логическое НЕ (!)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Логический оператор НЕ (!) (логическое отрицание) меняет логическое значение операнда с истины в ложь и наоборот. Обычно он используется сбулевыми (логическими) значениями. При использовании с любыми другими значениями, если операнд может быть преобразован вtrue, то вернётfalse; в противном случае он возвращаетсяtrue.
In this article
Интерактивный пример
const a = 3;const b = -2;console.log(!(a > 0 || b > 0));// Expected output: falseСинтаксис
!expr;Описание
Возвращаетfalse, если операнд может быть преобразован вtrue; в противном случае возвращаетсяtrue.
Если значение может быть преобразовано вtrue, то оно рассматривается какистинноподобное (truthy). Если же значение может быть преобразовано вfalse, то оно называетсяложноподобным (falsy).
Примеры выражений, которые могут быть преобразованы вfalse:
null;NaN;0;- пустая строка (
"",'',``); undefined.
Несмотря на то, что оператор! может использоваться с операндами, значения которых не относится к типу Boolean, это всё равно булевый оператор, поскольку его возвращаемое значение всегда можно преобразовать вбулевый примитив. Чтобы явно преобразовать возвращаемое значение этого оператора (или вообще любое выражение) в соответствующее значение булевого типа, используйте двойнойоператор НЕ или конструкторBoolean.
Примеры
>Использование логического НЕ
В следующем коде показаны примеры использования оператора! (логическое НЕ).
n1 = !true; // !t вернёт falsen2 = !false; // !f вернёт truen3 = !""; // !f вернёт truen4 = !"Cat"; // !t вернёт falseДвойное НЕ (!!)
Можно один за другим использовать пару операторов НЕ, чтобы явным образом принудительно преобразовать любое значение в соответствующийбулевый примитив.Преобразование основано на "истинноподобности" или "ложноподобности" значения (см.truthy иfalsy)).
Точно такое же преобразование может быть выполнено с помощью функцииBoolean.
n1 = !!true; // !!truthy вернёт truen2 = !!{}; // !!truthy вернёт true: любой объект - истинноподобный...n3 = !!new Boolean(false); // ...даже Boolean-объект со значением false из вызова .valueOf()!n4 = !!false; // !!falsy вернёт falsen5 = !!""; // !!falsy вернёт falsen6 = !!Boolean(false); // !!falsy вернёт falseКонвертация операторов НЕ
Следующая операция сбулевыми значениями:
!!bCondition;всегда эквивалентна:
bCondition;Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-logical-not-operator> |