javascript中==和===最主要的区别

本文深入探讨JavaScript中==和===的区别,揭示隐式类型转换的原理。当使用==时,不同类型的值会尝试转换为number进行比较,而===则不进行类型转换,确保值和类型的严格匹配。了解这些差异对于编写无bug的高质量JS代码至关重要。建议开发者在实践中优先使用===以提高代码的可靠性。

接触过js语言,==和===是绕不开的话,可以说拿捏不好这两个的区别,就写不出高质量的js代码,bug也会随形相伴,甩也甩不掉。下面记录了关于==和===的区别,能达到一劳永逸的目的。

==隐式类型转换原理

javascript中有两个值通过==比较,将会发生两种情况:

  1.  ==两边的类型不一致,则隐式转换成number基本类型的值进行比较;
  2. ==两边类型不是对象类型且类型一致的话或者转换后类型一致了,则不再转换成number类型了。
  3. ==两边其中一个类型是对象类型,则调用toString()之后做比较。

这里注意一下,数组通过调用toString()之后,其实是返回一个字符串:

了解数组toString之后,我们可以通过以下代码看就比较直观易懂了:

if ('0' == 0) // true 遇到跟number类型比较,则Number('0'.toString()) = 0===0
if ('' == 0) // true 遇到跟number类型比较,则Number(''.toString()) = 0===0
[] == 0 // true
[''] == 0 // true
[] == false // true
[''] == false // true
[] == '' // true
[''] == '' // true
[] == ![] // true,![]转换成false,Number([].toString())==0,false转成0,所以相等。

在浏览器中执行以上的结果打印如下:

注意!!!null和undefined进行比较才能为true

null == undefined // true
'' == null // false
'' == undefined // false

if 只有单值

if(单值),如果没有==的情况下,只有以下的值才会为假值:

  • 0
  • '0'
  • false
  •  null
  •  undefined
  • ''
  • NaN
  • !真值

=== 不会造成隐式类型转换

===不会造成隐式类型转换,所以我们在开发的时候,最好使用===,保证值相等的情况下,类型也一致,代码层面安全可靠,造成不必要的bug。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值