1. [] == false; //true
这里是因为==符号会把两边的类型转换成一样的。这里会转成number
[] == 0 // 把false转为number
"" == 0 // 用array的valueOf/toString获取基本类型
0 == 0 // 空字符串转成数字之后是0,Number('')
2.![] == false; //true
javascript中所有对象都是true。
!true == false // []也是object,所以是true
false == false // true取反是false
[] == false; //在==判断时,[]被当做Array数组处理,且[]是空数组。空数组在==判断时,转换为0,即false。
![] == false; //在==判断前,先做![]运算,此时[]被!当做Array()对象,可以理解为!{};{}相当于“非undefined”,那么!{}就是“非(非undefined)”,即undefined;undefined在做==运算时,转换为0,即false。
这个[]==false是正确的,因为空对象本身就可以作为false处理
什么叫做Boolean类型?