弄懂JS隐式转换规则,一张图就够了(一)

当两个不同类型的数据进行抽象比较(==)时,JS会将它们先转换成统一数据类型,低层级的数据类型向高层级的数据类型转换,直到“==”左右两边数据类型相同,然后比较数据的值是否相同。

举个例子:

  • 数字遇上字符串:字符串→数字
1 == '1'    //true
  • 数字遇上布尔:布尔→数字
0 == false    //true
  • 数字遇上对象:对象→数字
0 == [0]    //true
  • 字符串遇上布尔:字符串→数字,布尔→数字
"" === false    //true
"0" === false    //true    "0" → 0,false → 0
  • 字符串遇上对象:对象→字符串
[1, 2, 3] == '1,2,3'    //true
  • 布尔遇上对象:
[0] == false    //true    [0] → "0" → 0, false → 0
[] == false    //true     [] → "0" → 0, false → 0
![] == false    //true
![] == false    //false

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

注意:

  1. ![] == false为true是因为 ! 会将 [] 直接转换成Boolean,在JS中,将其他数据类型转换成Boolean时,只有空字符串("")、0、null、undefined、NaN会转换成false,其他数据都会转换成true,所以空数组([])会被转换成true,![]为false,!![]为true
  2. undefined和null与任何有意义的值比较返回的都是false,但是null与undefined之间互相比较返回的是true。

参考:https://www.cnblogs.com/chenmeng0818/p/5954215.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值