Почему пустой массив равен пустой строке, но пустые массивы не равны?
При сравнении значений разных типов JavaScript приводит каждое из них к числу.источник: Сравнение разных типов

Два пустых массива не равны, т.к. массивы в JS – это объекты. Два объекта равны только если они есть один и тот же объект - сидит в одной области памяти:const arr = [];
let a = arr;
let b = arr;
a == b // true

let c = []; // одна область памяти
let d = []; // другая область памяти
c == d // false
В первом случае мы видим, что кавычки равны квадратным скобкам, а во втором - квадратные скобки не равны таким же квадратным скобкам. Объяснить можно всё, в том числе и это.  Думаю, правильный ответ - это нехватка здравого смысла у создателей джаваскрипта. Не представляю, как они сумели придумать такой синтаксис и не ужаснуться своему творению.