比较运算符

502 阅读2分钟

比较操作符

关系运算符

<小于、>大于、<=小于等于、>=大于等于
关系操作符通常用来比较,两个值的大小关系,结果返回一个布尔值。

大于和小于
  var num1 = 10;
  var num2 = 20;
  
  alert(num1<num2); // true
  alert(num1>num2); //false
大于等于和小于等于
  var num1 = 10;
  var num2 = 20;
  
  alert(num1 >= num2); // false
  alert(num1 <= num2); // true

运算规则

1.如果左右两侧都是数值,则数值之间进行比较
2.如果左右两侧都是字符串,则根据字符串对应的字符编码值
3.如果有一侧是NaN,则结果得到false
4.如果是nullundefinedtruefalse,则(会根据对应的规则)进行转换,然后进行比较

相等操作符

==相等 !=不等 ===全等 !==全不等,用于确认两个变量之间,是否相等。

相等和全等

虽然都是比较两个值是否相等,但是再比较的时候,他们分别遵循不一样的规则。

相等

比较两个操作数之间是否相等,如果相等会返回true,如果不相等会返回false,在比较的时候,会进行隐式类型转换。
alert(1 == 1); // true
alert("1" == 1); //true
alert(true == 1); //true
隐式转换规则
 1.NaN不等于任何类型的数值,包括自己本身,所以一点返回false;
 2.如果都是String类型的话,比较字符编码值,如果完全一直,则返回true,否则返回false;
 3.如果两侧都是Number类型数值,比较值是否相同;
 4.如果两边都是Object类型,则比较地址是否一致;
 5.null == undefined 返回true
 6.如果一侧是String,一侧是Number,将String转换为NaN之后,进行比较(如果String是数值类型则将String转换为Number进行比较)
 7.如果一侧是Boolean,则将布尔值转换为Number类型后,再根据上述规则进行比较;
全等

全等也是比较两个操作数之间是否相等的,但是与 == 不同,它从以下两个点进行考虑:
1.值是都相等
2.类型是都相等
alert(1 === 1); // true
alert("1" === 1); //false
alert(true === 1); //false

因为会判断类型,所以在这里并不会进行隐式类型的转换。
1.一旦两个操作数的数据类型不同,直接返回false。
2.一旦出现NaN,返回结果false
3.当类型一致的情况下,比较值是否相同,如果不同返回false,如果相同返回true

不等和全不等

和以上的相等和全等医院,不等和全不等在比较的时候:
前者只注重值,并且会进行隐式类型的转换,转换的规则与相等是一致的,只是返回的结果正好是相反的。
后者在注重值的同时,还会注重类型是否相同,转换规则与全等是一致的,只是返回的结果正好是相反的