Почему `[] + []` не даёт число

В JavaScript оператор `+` умеет не только складывать числа, но и соединять строки. Какую операцию выбрать, язык решает по типам значений — а массивы перед сложением сначала преобразует к примитивам, то есть к простым значениям вроде строк или чисел.

У массива такое преобразование обычно проходит через его строковое представление. Метод `toString()` собирает элементы через запятую; у пустого массива элементов нет, поэтому результат — пустая строка `""`. Значит, оба операнда превращаются в `""`, и `+` склеивает их как строки.

Пустая строка — это не пустой массив

Итог выражения — именно строка, а не массив и не число. Это важно, если результат затем сравнивают, выводят или используют в другом вычислении: пустая строка и пустой массив — разные значения, даже если оба визуально могут казаться «ничем».

Тот же механизм объясняет, почему массив с элементами ведёт себя иначе: например, `[1, 2]` при строковом преобразовании становится `"1,2"`. В случае двух пустых массивов склеивать нечего — поэтому выражение заканчивается пустой строкой.