关于非严格相等==你需要了解的知识

一、概念

不全等符号(即非严格相等),是ES2015中出现的相等算法。

是用于比较两个值是否相等,在比较前将两个被比较的值转换为相同类型。在转换后(等式的一边或两边都可能被转换),最终的比较方式等同于全等操作符=== 的比较方式。

关于非严格相等==的概念知识可以在MDN网中看一下,链接戳这里👇
JavaScript 中的相等性判断

二、知识点

关于非严格相等符号,这里有一些需要了解的知识点:

==进行比较的时候,如果左右两边数据类型不一样,则先转换为相同的数据类型,然后再进行比较。

  1. {}=={} 两个对象进行比较,比较的是堆内存的地址;
  2. null==undefined 相等
    null === undefined不相等
  3. NaN == NaN不相等(NaN和谁都不相等)
  4. [12] == ‘12’ 对象和字符串比较,是把对象toString()转换成字符串后再进行比较的;
  5. 空字符串"" == null 不相等
    ⚠️这里需要注意的是,虽然空字符串转成数字为0,而null转成数字也为0,但是结果并不成立,是特殊情况。
    在这里插入图片描述

null与空字符串的区别:
(1)null不指向任何对象,相当于没有任何值;而“”代表一个长度为0的字符串;
(2)null不分配内存空间;而“”会分配内存空间

  1. 除以上五种特殊情况,剩余所有情况在进行比较时,都是转换成数字再比较。(前提是数据类型不一样)
    (1) 对象转数字 => 先转换为字符串,然后再转换成数字;
    (2) 字符串转数字 => 只要出现一个非数字字符,结果就是NaN;
    (3) 布尔转数字 => true转为1,false转为0;
    (4) null转为数字0;
    (5) undefined转数字NaN。

三、举例

  1. 判断[12] == true
    理由:
    [12] => Number([12].toString()) = Number(“12”) = 12
    true => 1
    即 12 == 1,故结果为false
    控制台验证:
    在这里插入图片描述
    ————————————————————————————
  2. 判断[] == false
    理由:
    [] => Number([].toString()) = Number[""] = 0
    false => 0
    即 0 == 0,故结果为true
    控制台验证:
    在这里插入图片描述
    ————————————————————————————
  3. 判断true == 2
    理由:
    true => 1
    即1 == 2,故结果为false
    控制台验证:
    在这里插入图片描述

【 以上是本人学习探索中记下的笔记,仅以供分享学习。如有雷同,无意冒犯,请务必及时告知,立即更正!】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值