js中(!+[]+[]).length

回眸只為那壹抹淺笑 提交于 2020-04-03 12:36:32

我也不明白我怎么喜欢研究这些奇奇怪怪的内容😂

(!+[]+[]).length ==> 4

还是js的隐氏转换规则,详见上节;

https://www.cnblogs.com/hq-HQ/p/12624944.html

补充:! 逻辑非,将操作数的布尔值求反,!!  类型转换,将对应的类型转换为Boolean型;

举个🌰:

!null ==>true(等同于Boolean(null)==>false,加上非!,结果取反),  !undefined ==>true,   !1 ==>false,  ![] ==>false

!!null ==>false (等同于Boolean(null)==>false),  !!unsefined ==> false,  !!1==>true,  !![]==>true

 

言归正传:一步一步来,

先看!+[], !是个String类型,按照规则,[]也要转为String类型 "", 所以就是 !+"" , 即 ==> !"",(逻辑非来了)因为Boolean('')==>false,结果取反则为 true,

接下来变成了 true+[] ,二者都转换为字符串类型拼接,结果还是true;

最终变成 true.length 所以浏览器会输出

插一句:Boolean类型和数组类型相加,两者会转变为字符串类型拼接,当数组中有多项时,字符串会用逗号','隔开,在拿一个栗子🌰

加法有了,减法还会远么~~

Boolean类型和数组类型相减,两者会转变为Number类型运算,且必须只能有一项,如果多于一项,结果显示NaN;栗子🌰再来:

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!