dr.Brain

doctor Brain

мир глазами веб-разработчика

JavaScript: пустой массив

почему сравнение пустых массивов в JavaScript дает неожиданный результат

dr.Brain

время чтения 1 мин.

Photo by Michael Held on Unsplash

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

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

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

Результат:

true

Кажется, результат обескураживает. Но, пожалуй, стоит обратиться к логике языка программирования.

  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.

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

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.