不同类型间的比较,规律如下
类型 | 类型 | 规律 | 其它说明 |
对象 | 对象 | 比较是不是同一个内存地址 | |
对象 | 字符串 | 对象先转化为字符串,然后做比较 | |
对象 | 布尔类型 | 两边都要先转为数字(false是0,true是1)。是对象类型先隐式调用toString方法,然后再Number() | alert([]==false); alert([]==0) alert([1]==1); alert([1]==true) alert([2]==true) |
对象 | 数字 | 对象要转为数字,再进行比较(对象先隐式调用toString方法转化为字符串,然后再把这个字符串轮化为数字,相当于把这个字符串放到Number这个方法中) | |
数字 | 布尔 | 是进行的数字的比较 | |
数字 | 字符串 | 把字符串转化为数,再比较 | |
布尔 | 把两边都要转化为数字再进行比较 | ||
null | undefined | true | |
null,undefined | 和其它类型 | null和undefined和其它类型比较都是false(这两个对象没toString方法) | alert(null==false) alert(null==0) alert(null=="");; |
自身做布尔运算的时候的转换
类型 | 规律 | 示例 |
object | 都是true | alert(!![]) |
number | 只是0和NaN是false | alert(!!0); |
string | 只有空字符串是false(不是空格字符串) | alert(!!""); |
function | 都是ture | |
null,undefined | 都是false |