【问题标题】:JavaScript array to number [duplicate]JavaScript数组到数字[重复]
【发布时间】:2012-01-01 23:53:44
【问题描述】:

可能重复:
Can you explain why ++[[]][+[]]+[+[]] = 10

这几天我一直在想一些事情……我知道 JavaScript 中的一元加号首先将它的操作数转换为数字。我将 + 应用于一个空数组,我得到以下结果:

+[] == 0

当我这样做时:

+[1] == 1

但是:

+[1,2] == NaN

最后两件事几乎都清楚了,但是为什么空数组是0?! 这是否与:

[] == false

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

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

最好的问候!

【问题讨论】:

标签: javascript


【解决方案1】:

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

> [].toString()
""

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

> Number("")
0

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

【讨论】:

    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2018-08-31
    • 2013-03-21
    • 2018-05-01
    • 2017-05-30
    相关资源
    最近更新 更多