js中不同类型作比较的规律(布尔运算)
珠峰培训原创教材
不同类型间的比较,规律如下
类型 |
类型 |
规律 |
其它说明 |
对象 |
对象 |
比较是不是同一个内存地址 |
|
对象 |
字符串 |
对象先转化为字符串,然后做比较 |
|
对象 |
布尔类型 |
两边都要先转为数字(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 |
|