javascript基础四:== 和 ===区别,分别在什么情况使用?

news2024/11/20 2:46:29

在这里插入图片描述
一、等于操作符
等于操作符用两个等于号( == )表示,如果操作数相等,则会返回 true

前面文章,我们提到在JavaScript中存在隐式转换。等于操作符(==)在比较中会先进行类型转换,再确定操作数是否相等

遵循以下规则:
如果任一操作数是布尔值,则将其转换为数值再比较是否相等

let isResult = true==1
undefined
isResult
true

在这里插入图片描述
如果一个操作数是字符串,另一个操作数是数值,则尝试将字符串转换为数值,再比较是否相等

let isResult = 66=='66'
undefined
isResult
true

在这里插入图片描述
如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf()方法取得其原始值,再根据前面的规则进行比较

let obj = {valueOf:function(){return 2}}
undefined
let isResult = obj==2
undefined
isResult
true

在这里插入图片描述
null和undefined相等

null==undefined
true

在这里插入图片描述
如果有任一操作数是 NaN ,则相等操作符返回 false

NaN == NaN
false
NaN == 1
false

在这里插入图片描述
如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true

let obj1 = {name: '小爱同学'}
undefined
let obj2 = {name:'小爱同学'}
undefined
obj1==obj2
false
let obj3 = obj1
undefined
let obj4 = obj1
undefined
obj3==obj4
true

在这里插入图片描述
下面进一步做个小结:

  • 两个都为简单类型,字符串和布尔值都会转换成数值,再比较
  • 简单类型与引用类型比较,对象转化成其原始类型的值,再比较
  • 两个都为引用类型,则比较它们是否指向同一个对象
  • null 和 undefined 相等
  • 存在 NaN 则返回 false

二、全等操作符
全等操作符由 3 个等于号( === )表示,只有两个操作数在不转换的前提下相等才返回 true。即类型相同,值也需相同

'55'===55
false
55===55
true

在这里插入图片描述

undefined 和 null 与自身严格相等

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

在这里插入图片描述
三、区别
相等操作符(==)会做类型转换,再进行值的比较,全等运算符不会做类型转换

let result1 = ("55" === 55); // false,不相等,因为数据类型不同
let result2 = (55 === 55); // true,相等,因为数据类型相同值也相同

在这里插入图片描述
null 和 undefined 比较,相等操作符(==)为true,全等为false

null == undefined
true
null===undefined
false

在这里插入图片描述
小结
相等运算符隐藏的类型转换,会带来一些违反直觉的结果

''=='0'
false
0==''
true
0=='0'
true
false =='false'
false
false=='0'
true
false==undefined
false
false==null
false
null==undefined
true

在这里插入图片描述
但在比较null的情况的时候,我们一般使用相等操作符==

const obj = {}
if(obj.x==null){ console.log('ddd')}
VM1519:1 ddd
undefined

在这里插入图片描述
等同于下面写法

if(obj.x === null || obj.x === undefined) {
    ...
}

使用相等操作符(==)的写法明显更加简洁了

小结
所以,除了在比较对象属性为null或者undefined的情况下,我们可以使用相等操作符(),其他情况建议一律使用全等操作符(=)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/568882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis集群安装之哨兵集群

1.哨兵集群介绍及原理 主从模式,当主节点宕机之后,从节点是可以作为主节点顶上来,继续提供服务的。但是有一个问题,主节点的IP已经变动了,此时应用服务还是拿着原主节点的地址去访问,此时就需要人工干预进行…

阿里巴巴 MySQL binlog 增量订阅消费组件canal实现mysql数据同步

canal实现mysql数据同步 简介:最近线上系统进行压测,评估线上系统容量,根据压测情况对代理层,代码,sql等都做了相应的优化,而系统最大的瓶颈在于数据库,根据实际业务情况,决定对数据…

迅镭激光董事长颜章健受邀参加江苏师范大学研究生毕业答辩活动

5月20日,迅镭激光董事长颜章健应邀赴江苏师范大学物电学院进行为期2天的考察交流,并作为特聘专家参加光电信息工程专业研究生毕业答辩活动。 校企携手 再谱新篇 考察期间,江苏师范大学物电学院举行欢迎座谈会,江苏师范大学学科办…

二叉搜索树(查找、插入、删除的讲解实现+图文并茂)

目录 1. 二叉搜索树(BST) 1.1 二叉搜索树概念 1.2 二叉搜索树操作 1.2.1 二叉搜索树的查找 1.2.2 二叉搜索树的插入 1.2.3 二叉搜索树的删除 2. 二叉搜索树的实现 2.1BST基本结构 2.2 BST操作成员函数(非递归) 2.3 BST操作成员函数&#x…

开放式耳机是什么意思?2023年开放式耳机推荐指南

开放式耳机,就是开放耳朵不需要塞入耳道的一种耳机。 这种耳机包括气传导和骨传导两种类型。气传导耳机采用波束成形技术进行定向传音,将音频传送到耳朵,其所采用的空气传导原理在发声的时候不会引起振动。 而骨传导耳机则是通过震动颅骨来…

HttpRunnerManager接口自动化测试框架在win环境下搭建教程

近几日一直在研究如何把接口自动化做的顺畅,目前用的是轻量级jmeterantJenkins自动化测试框架,目前测试界的主流是python语言,所以一直想用搭建一个基于python的HttpRunnerManager。公司项目也比较多,在上班的过程中偶尔研究了一下…

【Linux高级 I/O(6)】初识文件锁—— flock()方法(附代码示例)

想象一下,当两个人同时编辑磁盘中同一份文件时,其后果将会如何呢?在 Linux 系统中,该文件的最后状态通常取决于写该文件的最后一个进程。多个进程同时操作同一文件,很容易导致文件中的数据发生混乱,因为多个…

【UE】制作追踪导弹

效果 步骤 1. 首先在虚幻商城下载所需素材 2. 打开“BP_West_Missile_M26” 勾选模拟物理 添加一个变量,命名为“Target” 该变量用来表示导弹追踪的目标,变量类型为actor的对象引用,勾选可编辑实例和生成时公开 在事件图表中添加如下节点 3…

Swin Transformer 论文精读

Swin Transformer 论文精读 https://www.bilibili.com/video/BV13L4y1475U Swin 几乎涵盖了 CV 的下游任务(下游任务指骨干网后面的 head 解决的任务,如:分类、检测、语义分割),并且曾经刷新多个数据集的榜单。 题目…

记一次符合Google Coding Style的Bash脚本重构

最近我在思考这样一个问题,顺便看一下gpt对这个问题的解释。搜索发现: 团队写代码,为什么要遵循coding guideline? 一致性:编码准则确保整个团队的代码风格和格式是一致的,这使得团队成员之间更易于交流和…

人工智能(Pytorch)搭建模型6-使用Pytorch搭建卷积神经网络ResNet模型

大家好,我是微学AI,今天给大家介绍一下人工智能(Pytorch)搭建模型6-使用Pytorch搭建卷积神经网络ResNet模型,在本文中,我们将学习如何使用PyTorch搭建卷积神经网络ResNet模型,并在生成的假数据上进行训练和测试。本文将…

Linux---vi/vim编辑器、查阅命令

1. vi\vim编辑器三种模式 vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能, 可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。 命令模式&#xff08…

整数智能重磅推出集成SAM的智能标注工具2.0

前言 图像语义分割一直是数据标注中最繁琐、最耗时的标注任务之一,利用钢笔工具手动描边的标注方式所带来的时间成本和低准确率都将影响模型的生产速度和模型性能。整数智能ABAVA数据工程平台最新发布了基于SAM(Segement Anything Model)改进…

【面试题】面试题总结

加油加油 文章目录 1. TCP与UDP的区别2. TCP为什么是四次挥手机制3. HTTP与HTTPS的区别4. HTTPS加密机制5. 简要介绍SSL/TSL协议6. GET与POST的区别7. cookie与session的区别8. JVM内存区域划分9. 程序运行时候内存不足,会出现什么状况10. 显式调用GC会立即执行吗11…

【Python json】零基础也能轻松掌握的学习路线与参考资料

Python中的JSON模块主要用于将Python对象序列化成JSON数据或解析包含JSON数据的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。由于JSON在Web应用中的广泛使用…

SpringCloud Sentinel实战限流熔断降级应用

目录 1 Sentinel核心库1.1 Sentinel介绍1.2 Sentinel核心功能1.2.1 流量控制1.2.2 熔断降级 2 Sentinel 限流熔断降级2.1 SentinelResource定义资源2.2 Sentinel的规则2.2.1 流量控制规则 (FlowRule)2.2.2 熔断降级规则 (DegradeRule)2.2.3 系统保护规则 (SystemRule)2.2.4 访问…

Tomcat配置https协议证书-阿里云,Nginx配置https协议证书-阿里云,Tomcat配置https证书pfx转jks

Tomcat/Nginx配置https协议证书 前言Tomcat配置https协议证书-阿里云方式一 pfx配置证书重启即可 方式二 jkspfx生成jks配置证书重启即可 Nginx配置https协议证书-阿里云实现方式重启即可 其他Tomcat相关配置例子如下nginx配置相关例子如下 前言 阿里云官网:https:…

探索Java面向对象编程的奇妙世界(三)

⭐ 垃圾回收机制(Garbage Collection)⭐ JVM 调优和 Full GC⭐ this 关键字⭐ static 关键字 ⭐ 垃圾回收机制(Garbage Collection) Java 引入了垃圾回收机制,令 C程序员最头疼的内存管理问题迎刃而解。Java 程序员可以将更多的精力放到业务逻辑上而不是内存管理工…

网安面试只要掌握这十点技巧,绝对轻轻松松吊打面试官

结合工作经验,在这里笔者给企业网管员提供一些保障企业网络安全的建议,帮助他们用以抵御网络入侵、恶意软件和垃圾邮件。 定义用户完成相关任务的恰当权限 拥有管理员权限的用户也就拥有执行破坏系统的活动能力,例如: ・偶然对系…

挂耳式耳机品牌排行榜,良心推荐这四款蓝牙耳机

在蓝牙耳机越来越普及的同时,大家开始重视佩戴耳机时的舒适度,市面上的耳机形式也逐步迭代,目前流行的开放式耳机不仅很好的避免长期佩戴耳机产生的酸痛感,而且对耳道健康问题的处理也具有极佳的效果。那么,面对市面上…