Как минимум [] == [] будет фалс, потому-что объекты разные. Далее мы инвертируем правый массив как булевое значение через ! и получаем false т.к. массив то есть и он сам по себе true Пока что получаем true == false Но что дальше, при таком сравнении пустой массив слева представляет собой сравнение разных типов, поэтому приводим сперва массив слева юзая toString (или valueOf) не помню точно, и получаем пустую строку, которая в свою очередь falsy значение, вот и выходит false == false = true
Спасибо за объяснение)
в спеке по es алгоритм есть =)
Обсуждают сегодня