[摘要]本篇文章给大家带来的内容是关于JavaScript中equality(==)的用法解释,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。神奇之处在哪里最近负责的项目有涉及到前端的,所以...
本篇文章给大家带来的内容是关于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 == ’‘的时候先进行了类型装换,那我们来看一下到底是转换的谁啊?