12

Possible Duplicate:
Can you explain why ++[[]][+[]]+[+[]] = 10

I'm wondering something for few days...I know that unary plus in JavaScript first converts it's operand to Number. I'm applying + to an empty array and I get the following result:

+[] == 0

When I do this:

+[1] == 1

But:

+[1,2] == NaN

The last two things are almost clear but why the empty array is 0?! Is this connected with:

[] == false

Some times ECMAScript makes me wonder a lot...

alert([![]+[]][+[]][+[]]+[![]+[]][+[]][+!+[]]+[!+[]+[]][+![]][+![]]+[![]+[]][+[]][+!+[]]+[![]+[]][+[]][+!+[]+!+[]]+' '+(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);

Best regards!

1

1 Answer 1

7

The stringified form of the empty Array is an empty string:

> [].toString()
""

The unary operator + converts to Number objects, so, it converts an empty string to 0:

> Number("")
0

This explains why +[] == 0 is true.

Sign up to request clarification or add additional context in comments.

Comments