JavaScript中的==与===

先来看看这个会输出什么?

[12]==12;

这里大家可以先思考一下是返回false,还是true。

其实这是个很简单的问题,只是不太了解“==”和“===”的比较规则,所以就比较懵。

“==” 的比较规则

  1. 先检查两个操作数的数据类型是否相同
  2. 如果相同,则比较两个数是否相等
  3. 如果不同,则先将两个数转换为相同数据类型,再进行比较

上几个例子:
这里写图片描述
这里可以看到,数字型的 1 竟然与字符型的 ‘1’ 、数组 [1] 】布尔值 true 相等了,这是因为js自动进行了一次数据类型转换,将字符串、数组、布尔值转为数字,再进行比较。

“===”的比较规则

  1. 先检查两个操作数的数据类型是否相同
  2. 若不同,直接返回false
  3. 若相同,则比较二者是否相等

如下所示:
这里写图片描述

跟==不同,当数据类型不同时, 不进行数据类型转换,直接返回false

来看看复杂一点的:

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

对于null==undefined返回true,在《JavaScript高级程序设计》(第三版)中是这么写的:
实际上undefined值是派生自null值的,因此ECMA-262规定对他们的相等性测试要返回true

而NaN(not a number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况,避免报错。NaN与任何值都不相等,包括NaN自身。

关于null和undefined的区别也是一个有意思的点,不是本文重点,有兴趣的同学自行百度,或者可以等我后续博客啦~

  • 30
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值