js中的 == 比较规则

前言

在 js 中,== 是一种宽松相等运算符,它会在比较两个操作数时,尝试进行类型转换,以便比较它们的值
如果类型不同是,两边的值都尽量转成number

== 的比较规则如下:

  • 如果操作数具有相同的类型,则按如下方式进行比较:
    • 对象(Object):仅当两个操作数引用同一个对象时返回 true ;
    • 字符串(String):只有当两个操作数具有相同的字符且顺序相同时才返回 true ;
    • 数值(Number):如果两个操作数的值相同,则返回 true 。+0 和 -0 被视为相同的值。如果任一操作数为 NaN ,则返回 false ;因此 NaN 永远不等于 NaN ;
    • 布尔值(Boolean):仅当操作数都是 true 或 false 时,才返回 true ;
    • 大整形(BigInt):仅当两个操作数具有相同的值时,才返回 true ;
    • 符号(Symbol):仅当两个操作数引用相同的符号时,才返回 true ;
  • 如果操作数之一为 null 或 undefined ,则另一个操作数必须为 null 或 undefined 才返回 true 。否则返回 false ;
  • 如果操作数之一是对象,而另一个是原始值, 则将对象转换为原始值 。在这一步骤中,两个操作数都被转换为原始值(String、Number、Boolean、Symbol 和 BigInt 之一);
  • 如果操作数中有一个是 Symbol,但另一个不是,则返回 false 。
  • 如果操作数之一是 Boolean,而另一个不是, 则将 Boolean 转换为 Number : true 转换为 1, false 转换为 0。然后再次对两个操作数进行宽松比较。
  • Number == String: 将 String 转换为 Number 。转换失败会得到 NaN ,这将确保相等性为 false 。
  • Number == BigInt:按照其数值进行比较。如果 Number 是 ±Infinity 或 NaN ,返回 false 。
  • String == BigInt: 使用与 BigInt () 构造函数相同的算法将字符串转换为 BigInt。如果转换失败,则返回 false 。
    *
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值