JavaScript-比较运算符

一、概述

  • > 大于运算符
  • < 小于运算符
  • <= 小于或者等于运算符
  • >= 大于或者等于运算符
  • == 相等运算符
  • === 严格相等运算符
  • != 不相等运算符
  • !== 严格不相等运算符

二、非相等运算符:字符串的比较

先从第一个字符开始比较,比较依据(Unicode的大小)

"cat" > "dog";  // false

三、非相等运算符:非字符串的比较

如果两个运算子之中,至少有一个不是字符串,需要分成以下两种情况

  • 原始类型值:两个都是原始类型的值,则先转为数值再比较

    5 > '4' // true
    // 等同于 5 > Number('4')
    // 即 5 > 4
    
    true > false // true
    // 等同于 Number(true) > Number(false)
    // 即 1 > 0
    
    2 > true // true
    // 等同于 2 > Number(true)
    // 即 2 > 1
    
  • 对象:如果运算子是对象,会转为原始类型的值,再进行比较。

四、严格相等运算符

  • == :比较两个值是否相等
  • === : 比较两个值是否相等。通过是同一类型数据,就是True,如果不是返回false
NAN == NAN;   // false
[] === [];    // false
{} === {};    // false
-----------------------
null === null;   // true
undefined === undefined;  // true

五、严格不相等运算符

它的算法就是先要求严格相等运算符的结果,然后返回相反值

1 !== "1";   // true

六、相等运算符

  1. 同类型的数据做比较的话,就不需要进行转换

  2. 原始类型值,转换为数值类型再进行比较

    1 == true // true
    // 等同于 1 === Number(true)
    
    0 == false // true
    // 等同于 0 === Number(false)
    
    2 == true // false
    // 等同于 2 === Number(true)
    
    2 == false // false
    // 等同于 2 === Number(false)
    
    'true' == true // false
    // 等同于 Number('true') === Number(true)
    // 等同于 NaN === 1
    
    '' == 0 // true
    // 等同于 Number('') === 0
    // 等同于 0 === 0
    
    '' == false  // true
    // 等同于 Number('') === Number(false)
    // 等同于 0 === 0
    
    '1' == true  // true
    // 等同于 Number('1') === Number(true)
    // 等同于 1 === 1
    
    '
      123  	' == 123 // true
    // 因为字符串转为数字时,省略前置和后置的空格
    
  3. 对象与原始类型值比较:将对象转换为原始类型值再比较

    // 对象与数值比较时,对象转为数值
    [1] == 1 // true
    // 等同于 Number([1]) == 1
    
    // 对象与字符串比较时,对象转为字符串
    [1] == '1' // true
    // 等同于 String([1]) == '1'
    [1, 2] == '1,2' // true
    // 等同于 String([1, 2]) == '1,2'
    
    // 对象与布尔值比较时,两边都转为数值
    [1] == true // true
    // 等同于 Number([1]) == Number(true)
    [2] == true // false
    // 等同于 Number([2]) == Number(true)
    
  4. null,undefied

    null == undefied;  // true
    

七、不相等运算符

它的算法就是先求相等运算符的结果,再取相反值。

原文地址:https://www.cnblogs.com/zhuchunyu/p/10648650.html