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