至于JavaScript中的比较运算符,“==”可能会被广泛使用,但“===”可能很多人会比较陌生。===表示身份。先比较两边变量的数据类型是否相等,再比较两边变量的值是否相等;==表示相等,就是只比较两边变量的值是否相等。
差异:
==,当双方值类型不同时,先进行类型转换,再进行比较。
==,没有类型转换,不同的类型必然不同。
下面分别说明:
先说'==='吧。比较容易。以下规则用于确定两个值是否相等==:
1.如果类型不同,就不相等。
2.如果两者都是数值,并且是同一个值,那么【等于】;(!例外)就是如果其中至少有一个是NaN,那么【不等于】。(判断一个值是否为NaN,只能用is NaN()
3.如果两者都是字符串,每个位置的字符相同,那么它们相等;否则,它们是不平等的。
4.如果两个值都为真或假,则它们相等。
5.如果两个值引用同一个对象或函数,则它们相等;否则,它们是不平等的。
6.如果两个值都为空,或者都没有定义,则它们相等。
说“==”
如果两个值类型不同,它们可能相等。根据以下规则执行类型转换和比较:
a,如果一个为空,一个未定义,那么相等。
b,如果一个是字符串,一个是数值,就把字符串转换成数值,比较一下。
c,若有任何值为真,则转换为1并比较;如果任何值为假,则将其转换为0并进行比较。
d、如果一个是对象,另一个是数值或者字符串,就把对象转换成基本类型的值,进行比较。对象转换为基础类型,使用其toString或valueOf方法。Js内置类,会在toString之前尝试valueOf
e,任何其他组合,都不相等。
总结:
也就是说,'=='是值之间的比较,而:'=='不仅是值之间的比较,也是类型之间的比较。一般在做项目的时候,我们根据不同的业务来决定用哪一个。大部分开发者习惯用'=='这个不严谨。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。