JS基础之== 与 ===原理

79 阅读1分钟

今天在公司写代码时,碰到了这个问题,因此兴趣来了。我之前一直明白 == 会进行类型转换,却不知道怎么转换,通过我一番搜索得到一下知识,特此记录。

一、== 与 ===的区别

是否进行类型转换

二、==比较原理

对于 == 来说,如果对比双方的类型不一样的话,就会进行类型转换。判断流程为:

  • 首先会判断两者类型是否相同。相同的话比大小,类型不相同的话,那么就会进行类型转换
  • 会先判断是否在对比 null 和 undefined,是的话就会返回 true
  • 判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number
  • 判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断
  • 判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断

三、===比较原理

判断两者类型和值是否相同,类型不一致,直接返回false;否则继续比较两值的大小