Найти в Дзене
dr.Brain

JavaScript: почему [] и ![] равны?

Давайте сравним в JavaScript пустой массив с его логическим антиподом: console.log([] == ![]) Думаете, что в результате будет false? Обратимся к логике языка программирования. Обогатившись знаниями, вернемся к нестрогому сравнению пустого массива и его противоположности: --- Оригинал статьи на русском языке на сайте dr.Brain Подписывайтесь на telegram-канал dr.Brain, если хотите первыми получать анонсы новых материалов и быть в курсе всех статей, обзоров. Проверяйте свои силы и готовьтесь к собеседованию по JavaScript c dr.Brain quiz js. --- Спасибо за внимание.
фото Michael Held (Unsplash)
фото Michael Held (Unsplash)

Давайте сравним в JavaScript пустой массив с его логическим антиподом:

console.log([] == ![])

Думаете, что в результате будет false?

Обратимся к логике языка программирования.

  1. Начнем с того, что JavaScript является слабо типизированным языком программирования и не требует явного указания типа данных для переменной.
  2. Также не будем забывать, что оператор логического отрицания ! меняет значение операнда с истины на ложь и наоборот.
  3. Наконец, запомним, что пустой массив [] является истинноподобным (truthy) значением. В JavaScript истинноподобное (truthy) значение — это значение, являющееся истиной в булевом контексте. К таким значениям относятся все значения кроме ложноподобных значений. Это означает, что в JavaScript все значения истинноподобны за исключением false, 0, -0, 0n, "", null, undefined и NaN.

Обогатившись знаниями, вернемся к нестрогому сравнению пустого массива и его противоположности:

  1. Выражение ![] соответствует !true и вернет false.
  2. Оператор == при сравнении приводит операнды к числам, а значит false соответствует 0, и [] тоже равен 0.
  3. Очевидно, что сравнение двух 0 дает true.
  4. Результат: true.

---

Оригинал статьи на русском языке на сайте dr.Brain

Подписывайтесь на telegram-канал dr.Brain, если хотите первыми получать анонсы новых материалов и быть в курсе всех статей, обзоров.

Проверяйте свои силы и готовьтесь к собеседованию по JavaScript c dr.Brain quiz js.

---

Спасибо за внимание.