用于进行比较的运算符称为关系运算符:小于(<),大于(<),小于等于(<=),大于等于(>=),相等(==),不等(!=),全等【恒等】(===),不全等【不恒等】(!==)。
var box = 3 < 2 ; // 关系运算符大多返回一个布尔值
var box = “3” >22; // 字符串会被转化成数值,再比较
var box = “3” >“22”; // 如果两个都是字符串,会对第一个字符进行比较,3>2
var box = 对象 ; //false;
var box = 2 > {
toString:funtion(){
return 1;
}
}
var box = "a">"b"; //97 >98 字符编码进行比较
var box = "a">"B"; //97 >66 字符编码进行比较
总结:
1.俩个操作数都是数值,则数值比较
2.两个操作数都是字符串,则比较两个字符串对应的字符编码值
3.如果一个操作数是数值,则将另外一个操作数转化为数值,然后进行数值比较
4.如果一个操作数是布尔值,则先将其转化成数值,然后再执行比较
5如果一个操作数是对象,则先调用valueof()方法或toString()方法,再用结果比较
相等和不相等------先转换再比较;全等和不全等------仅比较而不转换
var box = 2 == 1; //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.如果一个操作数是布尔值,则先将其转换成数值,true是1,false是0
2.如果一个操作数是字符串,则将其转成数值再比较
3.如果一个操作数的对象,则先调用valueOf()或toString()方法再返回值比较
4.不转换的情况下,null等于undefined
5.如果有一个操作符是NaN,则相等操作符返回false,不相等操作符返回true;NaN不等于NaN
6.如果两个操作数都是对象,则比较透明是否是同一个对象,如果都指向同一个对象,怎返回true,否则返回false
7.在全等和不全等的比较中,值和类型都相等,才返回true,否则返回false。换句话,在操作数不转换的情况下相等才是全等。
ps:这些东西我输入过信息,至少目前的理解的,当我哪天忘掉的时候,还可以跑到这里来寻找答案,分享给大家,也是在积累自己的财富,毕竟这是我自己实践过的内容,加油,对于接下来新一轮的面试找工作,我莫须有的自信