首页 > 代码库 > 运算符_关系运算符
运算符_关系运算符
四.关系运算符:用于进行比较的运算符称作为关系运算符:小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等(==)、不等(!=)、全等(恒等)(===)、不全等(不恒等)(!==)
和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:
1.两个操作数都是数值,则数值比较;
2.两个操作数都是字符串,则比较两个字符串对应的字符编码值;
3.两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
4.两个操作数有一个是对象,则先调用 valueOf()方法或 toString()方法,再用结果比较;
var box = 3 > 2; //true
var box = 3 > 22; //false
var box = ‘3‘ > 22; //false
var box = ‘3‘ > ‘22‘; //true
var box = ‘a‘ > ‘b‘; //false a=97,b=98
var box = ‘a‘ > ‘B‘; //true B=66
var box = 1 > 对象; //false,如果有 toString()或 valueOf()则返回 1 > 返回数的值
在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:
1.一个操作数是布尔值,则比较之前将其转换为数值,false 转成 0,true 转成 1;
2.一个操作数是字符串,则比较之前将其转成为数值再比较;
3.一个操作数是对象,则先调用 valueOf()或 toString()方法后再和返回值比较;
4.不需要任何转换的情况下,null 和 undefined 是相等的;
5.一个操作数是 NaN,则==返回 false,!=返回 true;并且 NaN 和自身不等;
6.两个操作数都是对象,则比较他们是否是同一个对象,如果都指向同一个对象,则返回 true,否则返回 false。
7.在全等和全不等的判断上,比如值和类型都相等,才返回 true,否则返回 false。
var box = 2 == 2; //true
var box = ‘2‘ == 2; //true,‘2‘会转成成数值 2
var box = false == 0; //true,false 转成数值就是 0
var box = ‘a‘ == ‘A‘; //false,转换后的编码不一样
var box = 2 == {}; //false,执行 toString()或 valueOf()会改变
var box = 2 == NaN; //false,只要有 NaN,都是 false
var box = {} == {}; //false,比较的是他们的地址,每个新创建对象的引用地址都不同
var age = {};
var height = age;
var box = age == height; //true,引用地址一样,所以相等
var box = ‘2‘ === 2 //false,值和类型都必须相等
var box = 2 !== 2 //false,值和类型都相等了
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 5 <title>运算符</title> 6 <script type="text/javascript"> 7 /* 8 var box = 3 > 2; 9 alert(box);//true 10 11 var box = 3 > 22; 12 alert(box);//false 13 14 var box = ‘3‘ > 22; 15 alert(box);//false 16 17 var box = ‘3‘ > ‘22‘; 18 alert(box);//true 19 20 var box = ‘a‘ > ‘b‘; 21 alert(box);//false a=97,b=98 22 23 var box = ‘a‘ > ‘B‘; 24 alert(box);//true B=66 25 26 var box = 1 > {}; 27 alert(box);//false,如果有 toString()或 valueOf()则返回 1 > 返回数的值 28 */ 29 30 /* 31 var box = 2 == 2; 32 alert(box);//true 33 34 var box = ‘2‘ == 2; 35 alert(box);//true,‘2‘会转成成数值 2 36 37 var box = false == 0; 38 alert(box);//true,false 转成数值就是 0 39 40 var box = ‘a‘ == ‘A‘; 41 alert(box);//false,转换后的编码不一样 42 43 var box = 2 == {}; 44 alert(box);//false,执行 toString()或 valueOf()会改变 45 46 var box = 2 == NaN; 47 alert(box);//false,只要有 NaN,都是 false 48 49 var box = {} == {}; 50 alert(box);//false,比较的是他们的地址,每个新创建对象的引用地址都不同 51 52 var age = {}; 53 alert(age); 54 var height = age; 55 alert(age); 56 var box = age == height; 57 alert(box);//true,引用地址一样,所以相等 58 59 var box = ‘2‘ === 2; 60 alert(box);//false,值和类型都必须相等 61 62 var box = 2 !== 2; 63 alert(box);//false,值和类型都相等了 64 */ 65 </script> 66 </head> 67 68 <body> 69 欢迎来到javascript的世界 70 </body> 71 </html>