翼度科技»论坛 编程开发 JavaScript 查看内容

== 与 ===

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
尽量不要用== 

==的比较过程

以 [] == ![] 为例

 
 左边 [] 是个数组 右边 ![] 是个表达式,表示对数组取反,需要对数组进行布尔判定,数组是对象所以是true,取反之后为false,所以就相当于比较

 
 == 两边数据类型不一样会将数据转变成原始类型 ,原始类型有 null 、 undefined 、数字、字符串、布尔值,如果数据转化成字符串就会优先调用toString(),如果数据转化成数字就会优先调用valueOf()

 
 所以实际上表达式又变成了

 
 都是原始类型了,但是两边的类型不一样 == 又得把两边转成数字 ' ' 转成数字是 0 ,false转成数字也是 0 就变成了 0和0的比较

 
 所以说 == 会让看上去明显不相等的两个表达式 结果为 true ,这显然是不合理的。而===是严格相等就不会出现这种情况。
二者的区别

== 是相等 ===是严格相等
== 在比较时,如果两边的类型相等则进行 === 比较,不相等则会先转换成相同类型再进行 === 比较,而===比较时,只要类型不一样就会返回 false
=== 比较:
1)只要类型不同就一定不相等
2)如果两个值都是数字并且为同一个值,那么相等,如果至少一个是NaN,则不相等(判定一个值是否为NaN,只能通过isNaN()来判断)
3)如果两个值都是字符串且每个位置的字符都一样,那么相等,否则不相等
4)如果两个值都是true 或者 false 那么相等
5)如果两个值都是引用类型并且引用同一个对象,那么相等
6)如果两个值都是null或者undefined,那么相等

来源:https://www.cnblogs.com/Luffy-RedRoc/p/16928866.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具