boolean和数据类型的转换规律
- !:一个叹号是取反,首先将值转换为布尔类型值,然后再取反
- !!:将其他数据类型转换为布尔类型,相当于boolean()
数据类型值转换的规则:
1、如果只有一个值,判断这个值是真还是假,遵循:只有0,NaN、” “、null、undefined这五个值是假的,其余都是真的。
2、如果是两个值比较是否相等,遵循这个规则:
(1)、val1==val2,两个值可能不是同一个数据类型的,如果是==比较的话会进行默认的数据类型转换:
- 对象==对象,永远不相等
- 对象==字符串,先将对象转化为字符串(调用toString()方法),然后再进行比较。
[ ]转化为字符串是一个空的字符串,{ }转化为字符串是[object Object] - 对象==布尔类型,对象先转化为字符串(toString),然后再转化为数字(Number),布尔类型也转化为数字(true是1,false是0),最后让两个数字比较
- 对象==数字,对象先转化为字符串(toString),然后把字符串再转化为数字(Number)
- 数字==布尔,布尔转化为数字
- 数字==字符串,字符串转化为数字
- 字符串==布尔,都转化为数字
- null==undefined,结果是true
- null或者undefined和其他任何的数据类型比较都不相等
(2)、绝对比较(===):val1===val2,如果数据类型不一样,不成立