== 与 === 的区别

"这篇博客深入探讨了JavaScript中的相等运算符(==)和全等运算符(===)的区别。文章指出,==在比较时不转换类型,而全等则会。特殊值NaN不等于任何值,包括自身,判断是否为NaN需用isNaN()。此外,undefined和null相等但不全等。在对象比较中,{}
摘要由CSDN通过智能技术生成

请添加图片描述

简单来说:

== (相等):先转换再比较
== (全等):仅比较而不转换

特殊值的比较
  • NAN 不等于任何值,规定NaN 也不等于 NaN,所以在判断值是否为NAN时,会使用isNaN()
  • undefined和null的比较
    1. 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值。undefined 和 null 都不会进行类型转换
    2. undefined和null的是相等的,但是不全等(严格模式下)

在这里插入图片描述

(==)如果两个操作数的类型相同,就不用进行转换数据类型,但是在不同时会转换数据类型再进行转换

类型相同的比较(== ===)

  • 两个操作数都为引用类型(对象或数组),那么会比较他们的内存地址(栈地址,即引用地址)
  • {} == {} 比较结果为false,因为他们两个属于对象类型;如果要判断对象是否为空,使用JSON.stringify({})=="{}"判断
  • 两个操作数为值类型(字符串、数值、布尔类型、null、undefined),就可以直接比较

(==)比较转换的优先级

  • 向数字转换,比如true=="true"不会转向左边的布尔类型,也不会转向右边的字符串类型,会使两边转为数字再进行比较,转为:1 == NAN 再比较,所以比较结果为false
    在这里插入图片描述
  • 如果一个操作数是对象,则调用对象的 valueOf() 方法,用得到的基本类型值按照前面的规则进行转换比较。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值