为什么“”==0返回true,==和===的区别详解?

本是古典 何须时尚 2021-11-05 06:14 345阅读 0赞

背景

当我判断性别为0的时候显示女性,可发现当性别为空字符串的时候也为0。为什么 “”==0返回为ture呢?

  1. gender=0
  2. if(0=="")
  3. 返回true

双等号和三等号区别?

  1. ==和===号的区别
  • 简单来说就是使用“==”时,如果两边类型不同,js引擎会把它们转换成相同类型然后在进行比较,
  • 而“===”则不会进行类型转换,因此当两边不是属于同一个类型,肯定不相等。

实际比较的过程

请参考我的这篇博客,一下几个值在if判断的时候是假
JavaScript条件判断true详解? true VS Truthy(真值)

false、0、””、null、undefined 和 NaN

也就是说0和“”最终都被转换成了布尔型 false,所以if(0==””)实际别叫的过程是if(false==false)返回true

解决方案

用三个等号,如上三个等号不会转换类型。if(0===””)的时候,由于两个数据类型不同返回false。

思考如下结果是什么?

  • 0=={}
  • 0==[]
  • false==””
    自己测试吧,根据我之前的博客,除了一下假之外都为真。也就是说{}和[]会被转换成true,“”转换成false。
    所以前两个是false,最后一个是true。

false、0、””、null、undefined 和 NaN

发表评论

表情:
评论列表 (有 0 条评论,345人围观)

还没有评论,来说两句吧...

相关阅读

    相关 for(;;)while(true)区别

    当我们有时用到死循环时,会用到for(;;)和while(true),它们的作用都是一样的,都是无限循环方法体中的代码;可是它们有什么区别呢? 1.在Java中是两者是