Что такое оператор !!! (not not) оператор в JavaScript?

Вам известен логический оператор NOT (!), который используется для отрицания выражения. В этой статье мы рассмотрим, что такое !!! (not not) оператор и его применение.

Истина и ложь

Прежде чем понять оператор not (!!), нам необходимо разобраться, что такое истинное и ложное значение в JavaScript. Истинное значение — это значение, которое считается истинным в булевом контексте. То есть, если у нас есть выражение if("John") или if(1), то оно будет считаться true. Следовательно, непустая строка, ненулевое число и т.д. считаются истинными.

Аналогично, falsy — это некоторое значение, которое оценивается как false. Примерами являются 0, '' "", null, undefined и т.д.

Примеры истинности

Ниже приведены выражения, которые будут оцениваться как true. Следовательно, все значения внутри условий if являются истинностными значениями.

if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

Войти в полноэкранный режим Выйти из полноэкранного режима

Примеры falsy

Следующие значения считаются ложными в JavaScript:

  • false
  • 0
  • -0
  • », «»
  • null
  • неопределенный
  • NaN

Полный список можно найти здесь.

Использование оператора !!

Допустим, у нас есть функция getProductDetails, которая возвращает данные о продукте, если передан правильный идентификатор продукта. При передаче недопустимого идентификатора товара она может вернуть пустую строку или undefined. Таким образом, код для обработки сведений о товаре, полученных в качестве ответа, будет выглядеть следующим образом:

const product = getProductDetails(123)

if (product !== undefined || product !== "") {
  // Process product details
}
Войти в полноэкранный режим Выйти из полноэкранного режима

С помощью оператора not not мы можем сократить это следующим образом:

const product = getProductDetails(123)

if (!!product) {
  // Process product details
}
Вход в полноэкранный режим Выход из полноэкранного режима

!! — это не оператор, а два логических оператора NOT (!).
Первый из них (справа) преобразует операнд (оцениваемое значение) в отрицаемое булево, а второй ! снова отрицает булево значение, чтобы получить булево представление операнда.

То есть, !"John" будет оценено как false, а !false будет оценено как true.

В случае ложного значения, !0 будет оценено как true, а !true будет false.

Интересно отметить, что !!new Boolean(false) является true, потому что new Boolean(false) создаст объект, который является истинным, даже если он содержит ложное значение.

Оцените статью
devanswers.ru
Добавить комментарий