==和===有什么区别

对于==如果双方类型不同,就会进行类型转换后,再进行比较。

对于===就简单多了,就是判断两者类型和值是否相同。

==判断的流程如下:

1.首先会判断两者间类型是否相同,相同就比大小

2.类型不同的话,就会进行类型转换

3.会先判断是否再对比null和undefined,是的话就会返回true

4.判断两者类型是否为string和number,是的话将字符串转换为number

5.判断其中一方是否为boolean,是的话就会把boolean转为number再进行判断

6.判断其中一方是否为object且另一方为string、number或者symbol,是的话就会把object转为原始类型再进行判断

由以上规则,分析以下例子:

请正确写出[] == [] 和[] == ![]的结果。

答:[] ==[];//false  [] == ![];//true

分析如下:

[]==[]; //false,在两边都是相同数据类型时,==是直接比较两边数据,结果为false,因为[]是引用类型,分别指向不同的堆内存,所以结果是false。

[]==![]; //true,首先 ! 的优先级要大于==的,所以先运算右边,![]结果为false,又因为其中一方为boolean,则将其转为number再进行判断,![]为false,是值类型,即Number(false)=>0,[]为引用数据类型,Number([])=>0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值