详解==和===

247 阅读1分钟

众所周知,==和===在js中都是用于比较的,两者的区别就是==在比较的时候会做一些类型转换,===并不会做类型转换,那么==做的类型转换的规则是什么吗,下面我们就去探讨一下

==在比较时所遵循的规则

  1. 首先判断两者的类型是否相同,如果相同,则会比较值的不同
  2. 如果两者类型不同,则会做类型转换,首先比较是否是null和undefined,如果是,则返回true
null == undefind // true
null == null // true
undefind == undefind // true
  1. 如果不是则会判断两者是否为字符串或者数字,如果是则将字符串转换为数字
1 == '1'(后面的1会转换为数字1)
Number('') => 0 

  1. 如果不是字符串或者数字,则会判断是否为boolean,如果是boolean,则将boolean转换为数字判断
true == '1' // true
步骤详解
1、Number(true) ==> 1, 此时比较式变为 1 == '1',符合第三条规则,将字符串变为数字
2、Number('1') ===> 1, 此时比较式变为 1 == 1
  1. 如果是Object,则会将Object转换为基本类型,去进行比较
[] === 0
1. 首先调用数组的valueOf方法
[].valueOf() ==> []
2. 调用数组的toString()
[].toString() ==> ""
3. 此时等式变为 "" == 0,符合第三条
4. Number("") ==> 0, 此时等式变为0==0

好了上面就是一个==的类型转换的规则了,如果对大家有帮助,希望大家多点点赞