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

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

(!+[]+[]).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;栗子🌰再来:

 

posted @ 2020-04-03 11:54  草莓知妖妖🐰`  阅读(843)  评论(0)    收藏  举报