Problemas com a adição de objeto com matriz

Inspirado por issovídeo, Eu testeimais distante com{}+[].

Teste 1:

<code>typeof {}+[]  //"object"
</code>

OK, então{}+[] é umobject.

Teste 2:

<code>var crazy = {}+[];
typeof crazy  //"string"
</code>

O que? Não fez{}+[] é umobject? Por que é umstring agora?

Teste 3:

<code>console.log({}+[])
</code>

O que eu tenho:

Então é umnumber!... Não?

assimo que realmente é o tipo de{}+[]??

ATUALIZADA

Para as pessoas que dizem{}+[] é uma string vazia:

<code>{}+[] === ""     //false
({}+[]) === ""   //false
({};+[]) === ""  //SyntaxError
({}+[]).length   //15
</code>

JavaScript é tão difícil de entender ...

questionAnswers(2)

yourAnswerToTheQuestion