10 javascript
我想知道几天......我知道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)
最好的祝福!
空的字符串形式Array是一个空字符串:
> [].toString()
""
Run Code Online (Sandbox Code Playgroud)
一元运算符+转换为Number对象,因此,它将空字符串转换为0:
> Number("")
0
Run Code Online (Sandbox Code Playgroud)
这解释了为什么+[] == 0是真的.