JavaScript空数组疑惑

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

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

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

可是,又尝试了如下状况:浏览器

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

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

百度了如下,大约发现一些缘由

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

JavaScript中使用"=="运算符进行比较时,仍是须要当心谨慎