JavaScript布尔值转换

570 阅读1分钟

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

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

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

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

[] == false
!![]

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

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

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

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