JavaScript数组到数字

JavaScript array to number

本问题已经有最佳答案,请猛点这里访问。

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

我想知道有几天…我知道javascript中的一元加号首先将它的操作数转换为数字。我将+应用于空数组,得到以下结果:

1
+[] == 0

当我这样做的时候:

1
+[1] == 1

但是:

1
+[1,2] == NaN

最后两件事几乎很清楚,但为什么空数组是0?!这与以下方面有关吗?

1
[] == false

有时我会很好奇…

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

最好的问候!


Array的字符串形式是空字符串:

1
2
> [].toString()
""

一元运算符+转换为Number对象,因此它将空字符串转换为0

1
2
> Number("")
0

这就解释了为什么+[] == 0是真的。