这篇文章主要介绍了JavaScript中equality(==)怎么用,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、雅安服务器托管、营销软件、网站建设、张湾网站维护、网站推广。
神奇之处在哪里
最近负责的项目有涉及到前端的,所以尝试性的写了写js。在处理一个字段非空值的时候,用了 tagert_value == ''来进行判断,然后发生了一件非常奇怪的事情,有用户反馈,自己的target_value = 0的时候,非空值校验不通过。在调试问题的时候,在console状态栏中做了如下尝试:
> 0 == '' < true
我似乎知道问题出在哪里了。。。没有了解清楚 == 的判断逻辑,所以我打算找来官方的文档瞅瞅。
Equality (==, !=)
1、If the types of the two expressions are different, attempt to convert them to string, number, or Boolean.
2、NaN is not equal to anything including itself.
3、Negative zero equals positive zero.
4、null equals both null and undefined.
5、Values are considered equal if they are identical strings, numerically equivalent numbers, the same object, identical Boolean values, or (if different types) they can be coerced into one of these situations.
6、Every other comparison is considered unequal.
查看了官方关于equality的解释,看到第一个就知道为什么结果会是true了。如果表达式两边的类型不一致,比较方法会先尝试将他们转换为string、number、Boolean,然后在进行比较(相等的条件:同样的string、数学上相等的数字、相同的object、相同的布尔值)。
看到这里,基本清楚了,在比较 0 == ’‘的时候先进行了类型装换,那我们来看一下到底是转换的谁啊?
> Number('') < 0 > var b= '' > b.toString() <'0'
非常明显了,int == string 的时候是先将string装换为对应的int值,然后进行比较。
下面强烈介绍 === (strict equality)。严格等于,看着是不是非常厉害呀。人家的官方叫法是Identity(===. !==)。Identity 有点类型悬疑破案的感觉了。
看一下官方的介绍:
Identity (===. !==)
These operators behave identically to the
equality operators except no type conversion is done, and the types must
be the same to be considered equal.
在日常开发中,如果没法保证比较表达式两遍的变量的类型一致,建议使用 Identify(===)来比较是否相等。如果变量类型一致,就可以直接使用Equality(==)来比较了。
感谢你能够认真阅读完这篇文章,希望小编分享JavaScript中equality(==)怎么用内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!