JavaScript数组编号

可能重复:
你能解释为什么++ [[]] [+ []] + [+ []] = 10

我想知道几天的事情......我知道JavaScript中的一元加法首先将其操作数转换为数字。 我将+应用于一个空数组,并得到以下结果:

+[] == 0

当我这样做时:

+[1] == 1

但:

+[1,2] == NaN

最后两件事情几乎清楚,但为什么空数组是0?! 这是连接着:

[] == false

有时候ECMAScript让我很想知道很多...

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

最好的祝福!


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

> [].toString()
""

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

> Number("")
0

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

链接地址: http://www.djcxy.com/p/48043.html

上一篇: JavaScript array to number

下一篇: Why does Math.min([]) evaluate to 0?