JavaScript空数组疑惑

最近偶然间看到一段代码,大概可以表示如下

if([]){
    //其他代码
}
复制代码
首先我想到的是,由于是空数组,这段代码应该执行不到,但是尝试写了个demo
if([]){
    console.log("here");
}
复制代码

发现浏览器打印出了:here,说明之前想法出错了~~

但是,又尝试了以下情况:

[] == false
!![]
复制代码

浏览器都打印出:true,这样就感觉更加迷惑了。也就是说空数组[]可以转换成true,可以转换成false,JavaScript果然是一个神奇的语言啊

百度了以下,大约发现一些原因

使用"=="进行比较时,如果两边的类型不一致的话,会对两边的类型进行转换,转换成可以相互比较的类型,针对以上情况: 空数组[]会转换成Number类型,转换成0,false也会转换成Number类型,也转换成0,因此就出现了[] == false结果是true的情况

JavaScript中使用"=="运算符进行比较时,还是需要小心谨慎

转载于:https://juejin.im/post/5cc0fdfd6fb9a032514bb0a7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值