关于网友提出的“ 为什么在Javascript中[][+[]]+[][+!![]]表示n”问题疑问,本网通过在网上对“ 为什么在Javascript中[][+[]]+[][+!![]]表示n”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 为什么在Javascript中[][+[]]+[][+!![]]表示n
描述:console.log(([][+[]]+[])[+!![]])
n //output
为什么这堆符号会输出n
解决方案1:无义务祭出 @justjavac 大大的神器: http://justjavac.com/javascript/2012/05/24/can-you-explain-why-10.html
另补充一副分解动作图:
![为什么在Javascript中[][+[]]+[][+!![]]表示n](/imagecaealtourcom/Article/image/20160620/20160620092713_2851.jpg)
解决方案2:([][+[]]+[])[+!![]]
中先看最后一段[+!![]]
![]
为false,!![]
为true,前面加上+变成整数,[+!![]]
为1。
同理,[+[]]
为0,但[][+[]]
是undefined,+[]
后仍是undefined。
'undefined'[1]
,得出n。
解决方案3:拆解一下
> []
[]
> +[]
0
> [][0]
undefined
> [][+[]]
undefined
> undefined+[]
'undefined'
> [][+[]]+[]
'undefined'
> ![]
false
> !![]
true
> +!![]
1
> 'undefined'[1]
'n'
> ([][+[]]+[])[1]
'n'
> ([][+[]]+[])[+!![]]
'n'
推荐你看下这篇文章 jother编码
以上介绍了“ 为什么在Javascript中[][+[]]+[][+!![]]表示n”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1795031.html