JavaScript数组到数字
可能重复:JavaScript数组到数字,javascript,Javascript,可能重复: 几天来我一直在想一些事情……我知道JavaScript中的一元加号首先将其操作数转换为数字。我将+应用于一个空数组,得到以下结果: +[] == 0 当我这样做时: +[1] == 1 但是: 最后两件事很清楚,但为什么空数组是0?! 这是否与: [] == false 有时候ECMAScript让我很好奇 alert([![]+[]][+[]][+[]]+[![]+[]][+[]][+!+[]]+[!+[]+[]][+![]][+![]]+[![]+[]][+[]][+!+
几天来我一直在想一些事情……我知道JavaScript中的一元加号首先将其操作数转换为数字。我将+应用于一个空数组,得到以下结果:
+[] == 0
当我这样做时:
+[1] == 1
但是:
最后两件事很清楚,但为什么空数组是0?!
这是否与:
[] == false
有时候ECMAScript让我很好奇
alert([![]+[]][+[]][+[]]+[![]+[]][+[]][+!+[]]+[!+[]+[]][+![]][+![]]+[![]+[]][+[]][+!+[]]+[![]+[]][+[]][+!+[]+!+[]]+' '+(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
致以最良好的祝愿 空
数组的字符串化形式是空字符串:
> [].toString()
""
一元运算符+
转换为Number
对象,因此,它将空字符串转换为0
:
> Number("")
0
这就解释了为什么+[]==0
是正确的。最后,我发布了一篇关于+[]==0
@pimvdb的解释,它只是有病。。。回答得很好,谢谢!回答得好!
> Number("")
0