==与===的区别(配合数据类型转换)

本文详细解析了JavaScript中双等号(==)与三等号(===)的区别,包括它们在不同数据类型比较时的行为差异,以及特殊情况下如[]==![]的比较结果解析。

1、===:三个等号我们称为等同符,当等号两边的值为相同类型的时候,直接比较等号两边的值,值相同则返回true,若等号两边的值类型不同时直接返回false。

2、==:两个等号我们称为等值符,当等号两边的值为相同类型时比较值是否相同,类型不同时会发生类型的自动转换,转换为相同的类型后再作比较。

思考:[] ==![]结果是什么?

为什么?

[ ] == [ ] //false,是因为当两边都是相同类型的时候,==我们会对比两边的数据,而[ ]是引用类型,两个分别指向不同的堆内存。

而[ ] == ![ ]//true ,!的优先级大雨==,所以先运算右边,![ ] == false,这样 “[ ] == ![ ]”相当于“[ ] == false”

这时候 “==” 中的数据类型不相等,所以首先会先数据类型转换在比较值

JS的相等操作符判断原则:

1、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值再进行比较。对象通过toString()方法或valueOf()方法转换为原始值。

2、如果其中一个值是true,则将其转换为1再进行比较。如果其中一个值是false,则将其转换为0再进行比较。

3、 null与undefined相等

由此可知,[ ] 相当于 0,! [ ] => false => 0 , 所以 " [ ] == ! [ ] " 相当于 “ [ ] == false” 相当于 “0 == 0” 所以所以所以======》[ ] == ![ ]//true

 还有以下

false == 'false' // false

0 == ‘ ’ //true

 

转载于:https://www.cnblogs.com/chorkiu/p/10381990.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值