最近偶然间看到一段代码,大概可以表示如下
if([]){
//其他代码
}
复制代码
首先我想到的是,由于是空数组,这段代码应该执行不到,但是尝试写了个demo
if([]){
console.log("here");
}
复制代码
发现浏览器打印出了:here,说明之前想法出错了~~
但是,又尝试了以下情况:
[] == false
!![]
复制代码
浏览器都打印出:true,这样就感觉更加迷惑了。也就是说空数组[]可以转换成true,可以转换成false,JavaScript果然是一个神奇的语言啊
百度了以下,大约发现一些原因
使用"=="进行比较时,如果两边的类型不一致的话,会对两边的类型进行转换,转换成可以相互比较的类型,针对以上情况: 空数组[]会转换成Number类型,转换成0,false也会转换成Number类型,也转换成0,因此就出现了[] == false
结果是true的情况