开发者社区> 问答> 正文

==和===有什么区别?

展开
收起
前端问答 2019-11-24 19:49:38 910 0
1 条回答
写回答
取消 提交回答
  • 前端问答小助手

    对于==来说,如果对比双方的类型不一样的话,就会进行类型转换

    判断流程如下:

    1. 首先会判断两者类型是否相同。相同的话就是比大小了;
    2. 类型不相同的话,那么就会进行类型转换;
    3. 会先判断是否在对比nullundefined,是的话就会返回true
    4. 判断两者类型是否为stringnumber,是的话就会将字符串转换为number

      1 == '1'
          ↓
      1 ==  1
      
    5. 判断其中一方是否为boolean,是的话就会把boolean转为number再进行判断;

      '1' == true
            ↓
      '1' ==  1
             ↓
      1  ==  1
      
    6. 判断其中一方是否为object且另一方为string、number或者symbol,是的话就会把object转为原始类型再进行判断。

      '1' == { name: 'test' }
            ↓
      '1' == '[object Object]'
      

    图解如下:

    image.png

    对于===来说就简单多了,就是判断两者类型和值是否相同。


    思考[]==![]和{}==!{}的结果是什么?

    2019-11-25 07:09:48
    赞同 1 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载