1. 如果是 null == undefinedundefined == null,则他们相等
  2. 如果一个是数字,一个是字符串,则先将字符串转为数字再进行比较

    100 == '99';

    实际上是分为两个步骤

    // 第一步,先将'99'转为数字
    100 == Number('99');
    
    //第二步,进行比较,结果显然是false
    100 == 99;

    如果字符串不能转换为正确的数字,则会返回NaN,NaN和数字进行比较,将会按照第5个规则进行比较

  3. 如果其中一个值是true,则将true转为1。如果其中一个值是false,则将false转为0。然后按照第2个规则进行比较
    例如

        // 例一
        true == 1;
        //执行顺序如下        
        //先将 true 转为 1,结果便是进行如下比较
        1 == 1;
        //返回值自然就是true
        
        //例二
        true == '2';
        //执行顺序如下
        //先将 true 转为 1
        1 == '2';
        //再将 '2' 转为 2
        1 == 2;
        //返回值是false
        

    那么大家猜猜true == 'true'结果是什么呢?

  4. 如果一个值是对象,另一个值是字符串或数字,则先将对象转为原始值在进行比较
  5. 其他不同类型之间比较,都返回false
  6. 需要注意的是NaN == NaN,也返回false

波罗丁的菠萝
886 声望14 粉丝

深林人不知,明月来相照