隐式转化[]==![]

console.log([] == ![]) // true
???,咋回事
这个是正确的,这就是数据类型隐式转化的魅力了,偷偷的就把你骗了
献上验证过程:
第一步:根据运算符的优先级,!先执行,[]是一个对象,所以![]转化为false
第二步:根据类型转换规则第一条——“如果一个运算数是Boolean值,在检查相等性之前,把它转化成数字值。false转化成0,true转换为1。”。所以false转换成0
第三步:根据类型转换规则第三条——“如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。”。左边的[]调用toString(),转换成空字符串’’
第四步:根据类型转换规则第二条——“如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。”。’'转化成0。(左边得到0)
第五步:比较两边大小0==0,因此结果为true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值