- !:一个叹号是取反,首先转化为布尔类型,再取反
- !!:将其他数据转换为boolean类型,相当于Boolean()
- 如果只有一个值,判断这个值是真是假,遵循:只有0、NaN、""、null、undefined这五个是假的,其余都是真的
- 如果是两个值比较是否相等,遵循:
(两个值可能不是同一数据类型,如果是==比较,会进行默认的数据类型转换) - 除了==是比较,===也是比较(绝对比较),如果数据类型不一样,绝对不相等
- 对象\==对象 // false 永远不相等
- 对象\==字符串 //先将对象转化为字符串(toString()),再进行比较
- 对象\==布尔类型 //对象转字符串,再转数字(Number()),布尔类型转数字,最后比较数字
- 对象\==数字 //对象先转字符串,再转数字
- 数字\==布尔 //布尔转数字
- 数字\==字符串 //字符串转化为数字
- 字符串\==布尔 //都转数字
- null\==undefined //true
- null或者undefined和其他任何数据类型比较都不相等