If you open a JS Console in your browser (in my case Chrome) and type:
{} + []
you will get 0, but when you type
console.lo
{} can either be an empty block or a empty object literal depending on context.
+ can either be the unary plus operator or the concatination operator depending on context.
The first code example is an empty block it might as well not be there, making the expression the same as +[], meaning "An empty array converted to a number".
You can't have a block as a function argument, so the second code example {} is an object and the code means "Concatinate an object with an array" (implicitly converting both object and array to strings).