[]==![] 为true

要理解为什么在JavaScript中[] == ![]true,需要了解一下JavaScript的类型转换和比较操作。当使用双等号==进行比较时,如果两边的操作数类型不同,JavaScript会尝试将它们转换为相同的类型,然后进行比较。

隐性类型转换步骤

一、首先看双等号前后有没有NaN,如果存在NaN,一律返回false。

二、再看双等号前后有没有布尔,有布尔就将布尔转换为数字。(false是0,true是1)

三、null, undefined不会进行类型转换, 但它们俩相等

我们可以将[] == ![]这个表达式分解为以下几个步骤:

  1. ![]的计算结果是false。这是因为在JavaScript中,对象转换为布尔为true,而!操作符将其取反,得到false,因为有了布尔值,所以转化为数字0。
  2. 根据ECMAScript规范,空数组[]先转化为字符串'',再转换为数字时等于0
  3. 由于转换后的值相等(0 == 0),所以[] == ![]的结果为true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值