Spec-Zone.ru › JavaScript

Логическое НЕ (!)

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

Оператор логического НЕ (!) (логическое дополнение, отрицание) преобразует истину в ложь и наоборот. Обычно он используется с булевыми (логическими) значениями. При использовании с небулевыми значениями он возвращает false, если его единственный операнд может быть преобразован в true; в противном случае возвращает true.

Попробуйте

const a = 3;
const b = -2;

console.log(!(a > 0 || b > 0));
// Expected output: false

Синтаксис

!x

Описание

Возвращает false, если его единственный операнд может быть преобразован в true; в противном случае возвращает true.

Если значение может быть преобразовано в true, это значение называется truthy (истинным). Если значение может быть преобразовано в false, это значение называется falsy (ложным).

Примеры выражений, которые могут быть преобразованы в false:

  • null;
  • NaN;
  • 0;
  • пустая строка ("" или '' или ` `` `);
  • undefined.

Хотя оператор ! может использоваться с операндами, не являющимися булевыми значениями, он все еще может считаться булевым оператором, поскольку его возвращаемое значение всегда может быть преобразовано в булев примитив. Чтобы явно преобразовать его возвращаемое значение (или любое выражение в целом) в соответствующее булево значение, используйте двойной оператор NOT (!!) или конструктор Boolean.

Примеры

Использование NOT

Следующий код демонстрирует примеры оператора ! (логическое НЕ).

!true; // !t returns false
!false; // !f returns true
!""; // !f returns true
!"Cat"; // !t returns false

Двойное НЕ (!!)

Можно использовать пару операторов NOT последовательно, чтобы явно форсировать преобразование любого значения в соответствующий булев примитив. Преобразование основано на "истинности" или "ложности" значения (см. truthy и falsy).

То же преобразование может быть выполнено с помощью функции Boolean().

!!true; // !!truthy returns true
!!{}; // !!truthy returns true: any object is truthy…
!!new Boolean(false); // … even Boolean objects with a false .valueOf()!
!!false; // !!falsy returns false
!!""; // !!falsy returns false
!!Boolean(false); // !!falsy returns false

Преобразование между NOT

Следующая операция с булевыми значениями:

!!bCondition

всегда равна:

bCondition

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

Спецификация
ECMAScript® 2027 Language Specification
# sec-logical-not-operator

Совместимость с браузерами

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
logical_not
1
12
1
3
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

См. также

  • Boolean
  • Truthy
  • Falsy

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_NOT

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API