【发布时间】:2012-01-01 23:53:44
【问题描述】:
这几天我一直在想一些事情……我知道 JavaScript 中的一元加号首先将它的操作数转换为数字。我将 + 应用于一个空数组,我得到以下结果:
+[] == 0
当我这样做时:
+[1] == 1
但是:
+[1,2] == NaN
最后两件事几乎都清楚了,但是为什么空数组是0?! 这是否与:
[] == false
有时候 ECMAScript 让我很想知道...
alert([![]+[]][+[]][+[]]+[![]+[]][+[]][+!+[]]+[!+[]+[]][+![]][+![]]+[![]+[]][+[]][+!+[]]+[![]+[]][+[]][+!+[]+!+[]]+' '+(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]);
最好的问候!
【问题讨论】:
-
stackoverflow.com/questions/7202157/can-you-explain-why-10/… 最后我发布了对
+[] === 0的解释。 -
@pimvdb 这太恶心了……不过答案很好。
-
谢谢!很好的答案!
标签: javascript