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

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

为什么这堆符号会输出n

阅读 6.1k
3 个回答

拆解一下

> []
[]
> +[]
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。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题