Esto se debe a la {}
en el código es no un objeto literal, pero un bloque vacío.
Se analiza como:
{}; // empty block
+ []; // this result is shown in the console
Comparar con ({}) + []
que produce los mismos resultados que [] + {}
; en este caso, el paréntesis fuerza el {}
a tratar/analizar "en un contexto de expresión".
Hay un montón de duplicados de SO sobre este particular de doble naturaleza de {}
(como una expresión o bloque?) Pero, la búsqueda de ellos puede ser algo difícil ..
He encontrado https://meta.stackexchange.com/questions/83911/how-do-i-search-stackoverflow-for-at-keywords-like-private-or-synthesize en Meta, y utilizando Symbolhound los duplicados "más cercanos" que pude encontrar resueltos alrededor de las preguntas like this (que se relacionan con la necesidad de agregar paréntesis cuando "evalúa JSON") o this (donde el uso de construcciones como "{} == falso "es un error de sintaxis).
si alguien sabe una mejor manera de buscar SO para esta pregunta especie, o tiene un enlace a un duplicado tales útil ..
Debido a que es Javascript ... ¿quién dice que tiene que tener sentido? !! – Mehrdad
['WAT'] (https://www.destroyallsoftware.com/talks/wat)? :) – Nemoden
http://stackoverflow.com/questions/9032856/what-is-the-explanation-for-these-bizarre-javascript-behaviours-mentioned-in-the –