JavaScript: пустой массив
почему сравнение пустых массивов в JavaScript дает неожиданный результат
  
  Давайте сравним в JavaScript пустой массив [] с его логическим антиподом ![].
console.log([] == ![])
Думаете, что в результате будет false?
Результат:
true
Кажется, результат обескураживает. Но, пожалуй, стоит обратиться к логике языка программирования.
- Начнем с того, что JavaScript является слабо типизированным языком программирования и не требует явного указания типа данных для переменной.
 - Также не будем забывать, что оператор логического отрицания 
!меняет значение операнда с истины на ложь и наоборот. - Наконец, запомним, что пустой массив 
[]является истинноподобным (truthy) значением. 
В JavaScript истинноподобное (truthy) значение — это значение, являющееся истиной в булевом контексте. К таким значениям относятся все значения кроме ложноподобных значений. Это означает, что в JavaScript все значения истинноподобны за исключением false, 0, -0, 0n, “”, null, undefined и NaN.
Обогатившись знаниями, вернемся к нестрогому сравнению пустого массива и его противоположности:
- Выражение 
![]соответствует!trueи вернетfalse. - Оператор 
==при сравнении приводит операнды к числам, а значитfalseсоответствует0, и[]тоже равен0. - Очевидно, что сравнение двух 
0даетtrue - Результат: 
true. 
Спасибо за внимание.
