JS中的==的类型转换

因为之前学过C++和JAVA这种强类型语言,所以每次遇到JS这种弱类型语言的复杂的类型转换特别容易和流控制语句如if语句混淆,所以今天又去复习了一下

==运算符转换规则

  • 如果有一个操作数是布尔值,则在比较相等性前把其转换为Number,true转换为1,false为0
  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值
  • 如果一个操作数是对象,另一个不是,则调用对象的valueOf()方法,转换为基本类型值按照前面比较
    // valueOf()方法的介绍 https://www.imooc.com/article/details/id/23107

==运算符比较规则

  • null和undefined是相等的
  • 要比较相等性之前,null和undefined是不能进行类型转换的。这条规则就解释了如下代码
   null == 0   // false
   undefined == 0  // false
   null == false   // false
   undefined == false  // false
  • NaN不等于任和数据,所以
   NaN == NaN  // false
   NaN != NaN  // true
  • 如果两个操作数都是对象,则比较两个操作数是否指向同一个对象,如果是则返回true
    tip:这么多规则用的多了也就熟悉了,但既然JS有===全等运算符,又何必舍近求远呢
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容