JavaScript数组编号
可能重复:
你能解释为什么++ [[]] [+ []] + [+ []] = 10
我想知道几天的事情......我知道JavaScript中的一元加法首先将其操作数转换为数字。 我将+应用于一个空数组,并得到以下结果:
+[] == 0
当我这样做时:
+[1] == 1
但:
+[1,2] == NaN
最后两件事情几乎清楚,但为什么空数组是0?! 这是连接着:
[] == false
有时候ECMAScript让我很想知道很多...
alert([![]+[]][+[]][+[]]+[![]+[]][+[]][+!+[]]+[!+[]+[]][+![]][+![]]+[![]+[]][+[]][+!+[]]+[![]+[]][+[]][+!+[]+!+[]]+' '+(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
最好的祝福!
空Array
的字符串形式是一个空字符串:
> [].toString()
""
一元运算符+
转换为Number
对象,因此它将空字符串转换为0
:
> Number("")
0
这解释了为什么+[] == 0
是真的。