js中==和===区别

定义

  • ==:运算符称作相等,用来检测两个操作数是否相等,这里的相等定义的非常宽松,可以允许进行类型转换
  • ===:运算符称作严格相等,用来检测两个操作数是否严格相等
  • 对于string,number等基础类型,== 和 === 是有区别的,不同类型间比较,== 之比较“转化成同一类型后的值”看“值”是否相等,=== 如果类型不同,其结果就是不等同类型比较,直接进行“值”比较,两者结果一样
  • 对于Array,Object等高级类型,== 和===是没有区别的
  • 基础类型与高级类型,== 和 === 是有区别的对于==,将高级转化为基础类型,进行“值”比较,因为类型不同,===结果为false

比较过程

  • 双等号==:

(1)如果两个值类型相同,再进行三个等号(===)的比较
(2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:

  • 如果一个是null,一个是undefined,那么相等
  • 如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
  • 三等号===:

(1)如果类型不同,就一定不相等
(2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN() 来判断)
(3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
(4)如果两个值都是true,或是false,那么相等
(5)如果两个值都引用同一个对象或是函数,那么相等,否则不相等
(6)如果两个值都是null,或是undefined,那么相等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值