首页 > 为什么在Javascript中([][+[]]+[])[+!![]]表示n

为什么在Javascript中([][+[]]+[])[+!![]]表示n

console.log(([][+[]]+[])[+!![]])
n //output

为什么这堆符号会输出n


无义务祭出 @justjavac 大大的神器: http://justjavac.com/javascript/2012/05/24/can-you-explain-why-10.html

另补充一副分解动作图:


拆解一下

> []
[]
> +[]
0
> [][0]
undefined
> [][+[]]
undefined
> undefined+[]
'undefined'
> [][+[]]+[]
'undefined'
> ![]
false
> !![]
true
> +!![]
1
> 'undefined'[1]
'n'
> ([][+[]]+[])[1]
'n'
> ([][+[]]+[])[+!![]]
'n'

推荐你看下这篇文章 jother编码


([][+[]]+[])[+!![]]中先看最后一段[+!![]]
![]false!![]true,前面加上+变成整数,[+!![]]为1。
同理,[+[]]为0,但[][+[]]undefined+[]后仍是undefined
'undefined'[1],得出n。

【热门文章】
【热门文章】