Кстати что странно, так это то, что только в консоли такие результаты;
alert({} + []);
Причем если выполнить в коде
console.log({} + []);
то будет "[object Object]", а если набрать в консоли это выражение то будет Number 0.
Также для {} + {} я ожидал увидеть "[object Object][object Object]", но в консоли будет NaN, если набрать. Однако если выполнить в коде
console.log({} + {})
то будет ожидаемое