JavaScript数组到数字

10 javascript

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

我想知道几天......我知道JavaScript中的一元加号首先将它的操作数转换为数字.我正在应用+到一个空数组,我得到以下结果:

+[] == 0
Run Code Online (Sandbox Code Playgroud)

当我这样做:

+[1] == 1
Run Code Online (Sandbox Code Playgroud)

但:

+[1,2] == NaN
Run Code Online (Sandbox Code Playgroud)

最后两件事几乎是清楚但为什么空数组是0?!这与以下内容有关:

[] == false
Run Code Online (Sandbox Code Playgroud)

有时ECMAScript让我很奇怪......

alert([![]+[]][+[]][+[]]+[![]+[]][+[]][+!+[]]+[!+[]+[]][+![]][+![]]+[![]+[]][+[]][+!+[]]+[![]+[]][+[]][+!+[]+!+[]]+' '+(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
Run Code Online (Sandbox Code Playgroud)

最好的祝福!

dos*_*ssy 5

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

> [].toString()
""
Run Code Online (Sandbox Code Playgroud)

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

> Number("")
0
Run Code Online (Sandbox Code Playgroud)

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