首页 > Web开发 > 详细

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

时间:2020-04-03 15:03:42      阅读:70      评论:0      收藏:0      [点我收藏+]

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

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

技术分享图片

 

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

原文:https://www.cnblogs.com/hq-HQ/p/12625585.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!