[] == ![] "=="存在类型转换

undefined == null;    //true

1 == true;                 //true

2 == true;                 //false

0 == false;                //true

NaN == NaN            //false

[]     ==    false         //true

[]    ==   ![]                //true


只解释最后的两个;对于0,空字符串的判断建议使用"===".

"==="会先判断两边的值类型,类型不匹配就会返回false;

现在解释[]  ==  false;

单独 [] 的boolean类型是true;那么问题来了,为什么会和false相等呢?

因为这里特殊,空数组会转化成数字类型去比较;

Number([])     //0

Number(false)    //0

[] == false          //true

同理: 

[] == ![]          //true

这个更特殊;

有不合理的地方欢迎指正!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容