Почему в javascript {} + [] возвращает 0, а [] + {} возвращает «[object Object]»?
В начале кода JS считает {} пустым блоком кода. Получается {} + [] == +[], а +[] равно 0. Когда сначала идет массив, к пустому массиву прибавляется {}, и получается [] + {} = "" + {} = ({}).toString(). Массив является разным объектом из-за этого:[].toString() == "";
+[] == 0;
+[x] == x;
+[x,y,z] == NaN; // Ой, это неправильно!
+[x,y,z] != +[x,y,z] // NaN != NaN
{} + [] - пустой блок кода и приведение массива к числовому значению[] + {} - приведение массива к строковому значению и добавление строкового значения пустого объекта
В таблице результат '==': зелёный, серый, синий true, остальное false, объекты сравниваются по ссылке.