为什么“”==0返回true,==和===的区别详解?
背景
当我判断性别为0的时候显示女性,可发现当性别为空字符串的时候也为0。为什么 “”==0返回为ture呢?
gender=0
if(0=="")
返回true
双等号和三等号区别?
==和===号的区别
- 简单来说就是使用“==”时,如果两边类型不同,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
还没有评论,来说两句吧...