空数组转换成布尔型问题

数据类型转换为true的值转换为false的值
Boolean true false
String 任何非空字符串 ""空字符串
Number 任何非0数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a undefined

数组属于对象类型,所以空的数组转换成布尔型是true

相同的是,空的对象转换成布尔型也是true

1.

空数组[]和空对象{}都是object类型,因此直接用于if判断条件时就会被转化为true。

2.

任意值与布尔值比较,都会将两边的值转化为Number。

注意:

如果将空数组[]与布尔值false比较,false转化为0,而空数组[]也转化为0,因此[] == false的判断得到true。
如果将空对象{}与布尔值false比较,false转化为0,而空对象{}转化为NaN,由于NaN与任何数都不相等,因此{} == false的判断得到false。

原文地址:https://www.cnblogs.com/md-lw/p/10097215.html