!![]==true 、 []==true与![] == []

!![] == true //结果是true 
[] == true   //结果是false 
![] == []    //结果是true

为什么会这样呢?我们会想到相等运算符(== ),当两个操作数类型不同时就会进行转换。

让我们先复习一下

[] 转为字符串是 ""       // String([]) 返回""
[] 转为数字是 0     	   // Number([]) 返回0
[] 转为布尔值是 true 	   // Boolean([]) 返回true
true 转为数字是 1       // Number(true) 返回1
false 转为数字是 0      // Number(false) 返回0

1.我们先看!![]==true

! (逻辑非),会将操作数的布尔值求反,而!! 就是类型转换,将对应的类型转换为boolean型
所以我们看一看,[ ]一次求反 (![]) 返回的就是false,再求反(!![ ]) 返回的就是true。
最后的比较就变成 true == true 自然结果是 true

!(逻辑非)会将操作数的布尔值求反,!! 就是类型转换,将对应的类型转换为boolean型,

即[ ]原本是true,取反后为false,再次求反就是true,所以最终得到true==true

2. []==true

相等运算符(==) 在遇到两个操作数类型不同的时候,要遵守的规则和类型转换

true 会转为1
[ ] 会转为 0
最后是比较的是 0 == 1,所以结果是false

3.![] == [] 

![ ] ,也就是 [ ] 先转为 布尔值true,然后求反,就是false,false 转为数字就是0
[ ]转为数字就是0
最后就是 0 == 0 ,所以结果就是true

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值