js类型隐式转换

类型转换之 ==

== 规则

1- 如果操作符左右两边是对象类型,当且仅当两者引用相同才相等

const object1 = {"key": "value"}
const object2 = {"key": "value"};

object1 == object2 // false
object2 == object2 // true
复制代码

2- = null 和 undefined 比较相等,其他操作符一边是 null 或 undefined 一概不等

null == undefined // true
"0" == null; // false
"0" == undefined; // false
false == null; // false
false == undefined; // false 
"" == null; // false
"" == undefined; // false
0 == null; // false
0 == undefined; // false
复制代码

3- = 操作符两边类型不同时,会在比较之前尝试转换类型,分三种情况

  • 若一边是字符串,另一边是数字时,字符串会先转换为数字类型,Number()
    "0" == 0; // true
    复制代码
  • 若含有操作数是Boolean类型时,true则转换为1,false转换为+0
    false == NaN; // false
    false == 0; // true 
    false == ""; // true 
    复制代码
  • 若操作数是对象,另一操作数是数字或字符串时,对象则调用toString()或valueOf()方法转换为基础类型再比较
    false == []; // true  0=='' 
    false == {}; // false 0 == '[object Object]' Number()-----> 0 == NaN
    复制代码
  • 若操作数有相同的类型,比较规则如下
    1.都是string类型时,当且仅当字符完全相同时相等

     ''=='0' // false
    复制代码

    2.都是number类型时,当且仅当值相等,若一边有NaN,则为false,+0与-0相等

     false == NaN; // false
     "" == NaN; // false
     0 == NaN; // false
     0 == -0 // false
    复制代码

    3.如果两者都是Boolean,当两边是true,或两边是false时相等

    true == true // true
    false == false // true
    复制代码

!

  • !执行之前会先执行Boolean(x),得到false,则返回true,反之返回false
    Boolean 的转换逻辑是:一下情况都为false,其他为true

       undefiend,null,+0,-0,NaN,'',"".``,false
    复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享