Monday 19 December 2016

JavaScript array to number










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!


Answer



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.


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...