if 语句中经常需要判断一个值的布尔类型,其中最多的情况就是a==b的情况,因此总结一下要点。
当判断a==b是否为真时,首先我们需要看a与b的数据类型。
数据类型现在有一下常见的六种。
1.数值(number):整数和小数(比如1和3.14)
2.字符串(string):字符组成的文本(比如"Hello World")
3.布尔值(boolean):true(真)和false(假)两个特定值
4.undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
5.null:表示无值,即此处的值就是“无”的状态。
6.对象(object):各种值组成的集合,可分为狭义的对象(object),数组(array)以及函数(function)。
知道了数据类型我们要开始进行比较,如果两个值的类型不同,有一下情况:
1.如果一个是null,一个是undefined,那么相等。
2.如果一个是数字,一个是字符串,先将字符串转为数字,然后比较,其中NaN==NaN为true,但是NaN===NaN为false。
3.如果一个值是true/false则将其转为1/0比较。
4.如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较。
5.其它均不相等。
除了a==b的情况,另一种情况即直接对于数据类型来判断布尔类型,则有一下几种情况:
1.Undefined输出为false。
2.Null输出为false。
3.布尔值(Boolean)直接进行判断。
4.Number+0, −0, 或者 NaN 为 false, 其他为 true。
5.String空字符串为 false,其他都为 true
6.Object均输出为true。
以上