菜鸟学习javascript27 关系操作符(3)

用于进行比较的运算符称为关系运算符:小于(<),大于(<),小于等于(<=),大于等于(>=),相等(==),不等(!=),全等【恒等】(===),不全等【不恒等】(!==)。

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:这些东西我输入过信息,至少目前的理解的,当我哪天忘掉的时候,还可以跑到这里来寻找答案,分享给大家,也是在积累自己的财富,毕竟这是我自己实践过的内容,加油,对于接下来新一轮的面试找工作,我莫须有的自信

推荐阅读更多精彩内容