首页 > 代码库 > 这些比较规则,你未必都知道
这些比较规则,你未必都知道
相等运算符:
使用相等运算符来比较两个值是否相等,相等返回true,否则返回false。
1、对于简单类型来说,如数字、布尔值、字符串,比较的是两者的值是否相等。
1==1 // true
2==1 // false
true==true // true
true==false // false
"ajax"=="ajax" // true
"ajax"=="AJAX" // false
"ajax"=="javascript" // false
2、对于引用类型来说,如对象、数组等,比较的是两者的引用是否相等。也就是说,如果有两个数组,它们所包含的的元素是一样的,但是比较的结果仍然为false。
var a = new Array(1,2,3);
var b = a;
var c = new Array(3,1,2);
var d = new Array(1,2,3);
a==b // true
a==c // false
a==d // false
更详细的比较规则是:当两个值的类型相同时,就比较它们的值或者引用是否完全相等,当两个值类型不同时,他们也有可能相等。
* null与undefined相等。
* 数字和字符串比较,先将字符串转换为数字,再比较值。
* 布尔值和其它类型的值比较时,先将布尔值转换为数字再比较。true转换为1,false转换为0。
* 当数字、布尔值或字符串与对象比较时,先将对象转换为简单类型再比较。javascript的内置对象一般会先尝试valueOf()转换,再尝试toString()转换。比较特殊是是Date类,它会先执行toString()转换。
var a;
null==a // true
1=="1" // true。将字符串1转换为数值1,再比较
1==true // true。将布尔值true转换为1,再比较
0==false // true。将布尔值false转换为0,再比较
"1,2,3"==[1,2,3] // true。
补充:
* javascript中只要是对象都存在toString方法,该方法作用是:将调用该方法的值转换为字符串返回。
*valueOf()方法用于返回对象的原始值,该方法是数组对象的默认方法。
这些比较规则,你未必都知道