diff options
Diffstat (limited to 'files/ru/web/javascript/reference/operators/logical_not/index.md')
-rw-r--r-- | files/ru/web/javascript/reference/operators/logical_not/index.md | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/files/ru/web/javascript/reference/operators/logical_not/index.md b/files/ru/web/javascript/reference/operators/logical_not/index.md new file mode 100644 index 0000000000..ea5ead94b6 --- /dev/null +++ b/files/ru/web/javascript/reference/operators/logical_not/index.md @@ -0,0 +1,96 @@ +--- +title: Логическое НЕ (!) +slug: Web/JavaScript/Reference/Operators/Logical_NOT +tags: + - JavaScript + - Language feature + - Logical Operator + - Operator + - Reference +browser-compat: javascript.operators.logical_not +--- +{{jsSidebar("Operators")}} + +Логический оператор НЕ (`!`) (логическое отрицание) меняет логическое значение операнда с истины в ложь и наоборот. Обычно он используется с {{jsxref("Boolean", "булевыми")}} (логическими) значениями. При использовании с любыми другими значениями, если операнд может быть преобразован в `true`, то вернёт `false`; в противном случае он возвращается `true`. + +{{EmbedInteractiveExample("pages/js/expressions-logical-not.html", "shorter")}} + +## Синтаксис + +```js +!expr +``` + +## Описание + +Возвращает `false`, если операнд может быть преобразован в `true`; в противном случае возвращается `true`. + +Если значение может быть преобразовано в `true`, то оно рассматривается как {{Glossary("truthy", "истинноподобное (truthy)")}}. Если же значение может быть преобразовано в `false`, то оно называется {{Glossary("falsy", "ложноподобным (falsy)")}}. + +Примеры выражений, которые могут быть преобразованы в `false`: + +- `null`; +- `NaN`; +- `0`; +- пустая строка (`""`, `''`, ` `` `); +- `undefined`. + +Несмотря на то, что оператор `!` может использоваться с операндами, значения которых не относится к типу Boolean, это всё равно булевый оператор, поскольку его возвращаемое значение всегда можно преобразовать в [булевый примитив](/ru/docs/Web/JavaScript/Data_structures#Boolean_type). Чтобы явно преобразовать возвращаемое значение этого оператора (или вообще любое выражение) в соответствующее значение булевого типа, используйте двойной [оператор НЕ](/ru/docs/Web/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT) или конструктор {{jsxref("Global_Objects/Boolean/Boolean", "Boolean")}}. + +## Примеры + +### Использование логического НЕ + +В следующем коде показаны примеры использования оператора `!` (логическое НЕ). + +```js +n1 = !true // !t вернёт false +n2 = !false // !f вернёт true +n3 = !'' // !f вернёт true +n4 = !'Cat' // !t вернёт false +``` + +### Двойное НЕ (`!!`) + +Можно один за другим использовать пару операторов НЕ, чтобы явным образом принудительно преобразовать любое значение в соответствующий [булевый примитив](/en-US/docs/Web/JavaScript/Data_structures#Boolean_type). +Преобразование основано на "истинноподобности" или "ложноподобности" значения (см. {{Glossary("truthy")}} и {{Glossary("falsy")}})). + +Точно такое же преобразование может быть выполнено с помощью функции {{jsxref("Global_Objects/Boolean/Boolean", + "Boolean")}}. + +```js +n1 = !!true // !!truthy вернёт true +n2 = !!{} // !!truthy вернёт true: любой объект - истинноподобный... +n3 = !!(new Boolean(false)) // ...даже Boolean-объект со значением false из вызова .valueOf()! +n4 = !!false // !!falsy вернёт false +n5 = !!"" // !!falsy вернёт false +n6 = !!Boolean(false) // !!falsy вернёт false +``` + +### Конвертация операторов НЕ + +Следующая операция с **булевыми значениями**: + +```js +!!bCondition +``` + +всегда эквивалентна: + +```js +bCondition +``` + +## Спецификации + +{{Specifications}} + +## Поддержка браузерами + +{{Compat}} + +## Смотрите также + +- {{jsxref("Boolean")}} +- {{Glossary("Truthy")}} +- {{Glossary("Falsy")}} |