JS 应用篇(二):== 与 === 的区别

JavaScript 中 == 和 === 的区别 JavaScript 中的 == 和 === 运算符用于比较值是否相等,主要区别在于类型转换。=== 是严格相等,不进行类型转换,若类型不同直接返回 false。== 会先进行类型转换再比较,如将布尔值转为数字、字符串转为数字等。建议优先使用 === 以避免意外类型转换导致的错误,仅在明确需要类型转换时使用 ==。ES6 的 Object.is() 方法可更精确地比较 NaN 和 ±0 的情况。 阅读详情

目录:

一、== 与 === 的概念

1、 "==“叫做相等运算符,”==="叫做严格运算符。
2、 ==,等同的意思,两边值类型不同的时候,要先进行类型转换为同一类型后,再比较值是否相等。
===,恒等的意思,不做类型转换,类型不同的结果一定不等。
3、 "==“表示只要值相等即可为真,而”==="则要求不仅值相等,而且也要求类型相同。

对于明确数据类型的用===更为可靠,JavaScript是一门弱类型语言,表达式运算赋值等操作都会导致类型转换。而一些隐式转换会带来一些意想不到的后果。

建议:尽量使用严格运算符 ===。因为"=="不严谨,可能会带来一些违反直觉的后果。

二、严格运算符===的运算规则

1、不同类型值:如果两个值的类型不同,直接返回false。

2、同一类的原始类型值:同一类型的原始类型的值(数值number、字符串string、布尔值boolean)比较时,值相同就返回true,值不同就返回false。

3、同一类的复合类型值/高级类型:两个复合类型(对象Object、数组Array、函数Funtion)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。即“地址指针”是否相等。

详细说明:
1、如果类型不同,就[不相等]
2、如果两个都是数值,并且是同一个值,那么[相等];
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]。

三、相等运算符==的运算规则

相等运算符"==“在比较相同类型的数据时,与严格运算符”===“完全一样。
在比较不同类型的数据时,相等运算符”==“会先将数据进行类型转换,然后再用严格相等运算符”==="比较。

类型转换规则如下:
1、原始类型的值:原始类型的数据会转换成数值类型再进行比较。字符串和布尔值都会转换成数值。
2、对象与原始类型值比较:对象(这里指广义的对象,包括数值和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。
3、undefined和null:undefined和null与其他类型的值比较时,结果都为false,它们互相比较时结果为true。

详细说明:
1、如果两个值类型相同,进行 === 比较。
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:

  1. 如果一个是null、一个是undefined,那么[相等]。
  2. 如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
  3. 如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
  4. 如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。 js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。
  5. 任何其他组合,都[不相等]。

举例:

"1" == true;
类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。
'' == '0'           // false
0 == ''             // true
0 == '0'            // true
false == 'false'    // false
false == '0'        // true
false == undefined  // false
false == null       // false
null == undefined   // true
' \t\r\n ' == 0     // true
四、== 中的坑

举例:

function fix(n) {
    if (n == 0) return n + 1;
    return n + 2;
}

如果输入n为字符串值"0"的话,最后的将会得到字符串"01"作为返回值,而不是你想要的数字1。所以一句话概括:没有类型限制,类型转换的后果将是不可预料的。

五、总结

1、编程建议:尽量使用严格运算符 ===。因为"=="不严谨,可能会带来一些违反直觉和意想不到的后果。
2、少用==:因为没有类型限制,类型转换的后果将是不可预料的。

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程 1.新建shp文件地理坐标系保持和影像一致,面类型2.打开属性表3.添加字段这里分类6类,点击添加值添加添加完毕开始人工选地物类型,制作数据集开始标注,标注的时候可以借助谷歌地图来看标记足够多的样本打开面转栅格工具设置nodata值为15。 阅读详情

相关推荐

国产平替NeuroSky?实测金牛座TGAM脑电模块,从Arduino到Python的完整数据采集指南

本文详细介绍了国产金牛座TGAM脑电模块的完整使用流程,包括硬件连接、数据采集和Python分析。通过Arduino和Python的实战案例,展示了如何从脑电波传感器获取并解析专注度、放松度等数据,适用于专注力训练和脑机接口开发。

weixin_30735745的博客 575

js中==和===的区别以及总结

js中==和===的区别以及总结从安小说网 https://www.sixu.info 学习js时我们会遇到 == 和 === 两种符号,现做总结如下 两种符号的定义   "==" 叫做相等运算符   "===" 叫做严格相等运算符(全等运算符) 它们之间的区别   "==" 只判断等号两边的值是否相等,而不判断类型是否相同。值相同则返回 true   "===" 既要判断值是否相等,也要判断类型是否相同,即全等才能返回 true 总结: (分析 ==) 先把等号两侧的值转化为基本数据类型...

weixin_57699483的博客 5356

(3万字深度解析)Kaggle《房价预测:高级回归技巧》详解复现攻略

在这篇教程式文章中,我们从零开始完成了 Kaggle《房价预测:高级回归技巧》比赛的复现工作,涵盖了数据预处理、特征工程、模型训练、调优、解释和融合的完整流程。深入理解数据:阅读数据描述,结合常识对每个特征作出合理处理(如缺失值填充’None’表示无此设施 、异常值剔除 等)。对目标和偏态特征进行对数变换,使分布更平滑,从而更好满足模型假设并提升准确度。特征工程:我们创造了总面积、总浴室等新特征,整合信息提高模型可学习性。

qq_38334677的博客 1770

js中== 和 ==性能

  我们来看一看两种解释的区别。 根据第一种解释(不准确的版本), === 似乎比 == 做的事情更多,因为它还要检查值的 类型。第二种解释中 == 的工作量更大一些,因为如果值的类型不同还需要进行强制类型 转换。 有人觉得 == 会比 === 慢,实际上虽然强制类型转换确实要多花点时间,但仅仅是微秒级 (百万分之一秒)的差别而已。 如果进行比较的两个值类型相同,则 == 和 ===...

qq_30443907的博客 1459

【STM32】IEC60730 Class B软件安全实现 Part2:自检库实战指南

本文是STM32 IEC60730 Class B软件安全实现的实战指南,详细介绍了如何将X-CUBE-CLASSB自检库集成到用户项目中。内容涵盖软件包解构、内存划分、启动与运行时自检的集成步骤、关键代码示例及调试技巧,并阐述了为最终通过安全认证所需的文档与流程准备,帮助开发者高效实现MCU功能安全。

weixin_29185167的博客 91

2025虚幻游戏逆向工程解包尝试

2025虚幻游戏逆向工程解包指南 本文详细介绍了虚幻引擎5游戏逆向解包的完整流程,主要包括获取AES密钥、生成映射文件和导出资源三个关键步骤。作者在实际操作中遇到诸多难题:AES密钥获取工具存在加壳保护问题,映射文件生成器依赖复杂的VS编译环境,DLL注入工具的使用也存在技术门槛。通过多次尝试,作者发现部分游戏可直接搜索现成的AES密钥,而映射文件生成需要额外下载Memcury依赖库才能正常编译。文章提供了相关工具的下载链接和具体操作说明,但同时也指出每个环节都可能出现意外状况,逆向工程实际执行过程远比理论

wsdchong的博客 6150

​面试官:== 和 ===区别,分别在什么情况使用?

故心故心故心故心小故冲啊 文章目录一、等于操作符二、全等操作符三、区别小结 一、等于操作符 等于操作符用两个等于号( == )表示,如果操作数相等,则会返回 true 前面文章,我们提到在JavaScript中存在隐式转换。等于操作符(==)在比较中会先进行类型转换,再确定操作数是否相等 遵循以下规则: 如果任一操作数是布尔值,则将其转换为数值再比较是否相等 let result1 = (true == 1); // true 如果一个操作数是字符串,另一个操作数是数值,则尝试将字符串转换为数值,

iygxv 1240

告别色差!用Python+TCS34725颜色传感器实现精准色彩还原(附完整校准代码)

本文详细介绍了如何利用Python和TCS34725颜色传感器实现专业级色彩还原方案。通过双阶校准法(白光校准和黑电平校准)和进阶的光照自适应技术,解决传感器原始数据不准的问题,并提供完整的校准代码和实战案例,帮助开发者实现ΔE<3的高精度色彩识别。

weixin_30836759的博客 209

php 不恒等,php运算符 == 怎么使用以及与 === 恒等的区别是什么?

PHP编程语言中有许多运算符来帮助我们处理相关的字符和数组,在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用PHP运算符==对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较。...

weixin_29332029的博客 333

GEE|基于时间序列特征的山东省玉米随机森林分类代码

主题思路: 本实验为二分类实验,分类目标包括:玉米、其他(建筑、水体、水稻、 裸地、森林、小麦、道路、大蒜等),采用人工设计的特征指数的时间序列特征为分类依据,选取分类器为:随机森林分类器,并选取样本集中 70%作为训练样本,30%作为测试样本,通过调整随机森林棵数,调整分类器结构。选取以下参数进行分类: ⚫ 时间尺度:1990 年 4 月 15 日 - 1990 年 9 月 30 日 ⚫ 空间尺度:山东省 ⚫ 影像融合时间间隔:16天 ⚫ 特征值选择:['nir','ndvi'...

weixin_46493028的博客 7466

NVIDIA - 人形机器人扼要

人形机器人是仿照人类外形设计的通用双足机器人,旨在与人类并肩工作,提高生产效率。它们能够学习和执行各种任务,如抓取物体、移动集装箱、装卸箱子等。

机器人控制与仿真应用 1289

==与===的区别(JS)

两者都是判断等式两边是否相等,最大的区别就是==会进行类型的转换之后再判断两者是否相等,而===不会进行数据类型的转换,先判断两边的数据类型是否相等,如果数据类型相等的话才会进行接下来的判断,再进行等式两边值得判断,可以理解为只有等式两边是全等(数据类型相同,值相同)的时候结果才会是true,否则全为false。 ==判断等式两边是否相等的情况: (1)null、undefined和不同类型比较,都是false(null和undefined结果为true) (2)NaN和任何数据进行比较,都是fa

dream_start_at_2017的博客 8750

ChatTutor:让AI老师“会写会画”,打造可视化、互动式智能教育新范式

ChatTutor是一款突破性的开源AI教学助手,通过可视化电子白板实现"边讲边写"的沉浸式教学体验。该项目支持数学公式手写输入、动态函数绘图、自动生成思维导图等功能,采用多智能体架构实现专业协同。未来将扩展至编程、物理等STEM教育领域,适用于学生自学、教师备课和教育平台集成。作为MIT协议开源项目,ChatTutor通过赋予AI"教学肢体语言",推动教育从信息传递转向可视化互动建构,重新定义了AI助教的可能性。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 423

Js中 == 和 === 的区别

Js中 == 和 === 的概念,区别,使用场景以及优缺点

He_9a9的博客 2541

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JavaScript中==与===的区别

大家在学习JavaScript时,是否遇到这个问题,为什么JavaScript的比较符号是===和!==,而不是大家常见的==和!=? 实际上这两种比较符号都存在于JavaScript中,但是两者的表现并不相同。这里就给大家做介绍。 区别 ==和===有什么样子的区别呢?我们先来看这样一个例子。 这里我们比较数字1和字符串‘1’,我们看到===的比较结果与我们的普遍认知相符合,是返回false的...

黄腾霄的博客 1608

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

js中'=='和'==='的区别

js中= = 和 ===的区别 = = 和 ===都是用来判断相等的,区别是:相等的程度的深浅 1.= =判断相等的程度较浅,只判断数值而不判断数据类型,换言之 ,用= =作比较的时候可以自动为我们转换数据的类型; 2.===判断相等的程度比= =深,及判断数值,也判断数据类型,不可以自动转换数据的类型。 测试 = = let a = 1; //数字类型 let b = ‘1’; //...

我的博客 1372

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JavaScript中==和===的区别

JavaScript 提供两种相等运算符:<font color=red>\==</font> 和 <font color=red>\===</font>。 在日常开发中,通常推荐使用<font color=red>\===</font>,那么这两者到底有什么区别呢? 简单说,它们的区别是相等运算符(<font color=red>\==</font>)比较两个值是否相等,严格相等运算符(<font color=red>\=== </font>)比较它们是否为“同一个值”。如果两个值不是同一类型,

三分恶的博客 859

js中==和===的区别和使用

前言 之前学js的时候,也没仔细的研究过和=两个操作符之间的具体区别,但是本着实事求是的态度,今天上网查了一下他们两个的区别,最后得出的结论是: `===` 严格相等,会比较两个`值的类型和值` `==` 抽象相等,比较时,会`先进行类型转换,然后再比较值` 然后我就更迷惑了,先类型转换,我擦,怎么转换,左边转换成右边类型还是右边转换成左边类型? 先看几个例子: console.log([10] == 10); //true console.log('10' == 10

小小前端攻城狮的博客 850

JavaScript中==与===区别

1、== <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> console.log(1==1); console.log(1=="1"); </script> &...

Zzze0101的博客 459

JavaScript中的 == 和 === 的区别

== 和 === 的区别 1、相同点:都属于JavaScript中的比较运算符,是对两个变量进行比较,结果要么是true,要么是false。 2、不同点: (1)== 等于 只比较值,不比较数据类型 不论数据类型,只看数值是否相等 console.log(1== 1); 在控制台输出的结果为 true console.log(1 == '1'); 在控制台输出的结果也为 true (2)=...

Intelligent_的博客 600

JavaScript- ==与===区别

== 与 === 的区别 ==比较符号两边是否等,不考虑数据类型 === 也是比较符号两边是否等,但是需要考虑数据类型 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> ...

paku-san的博客 223

JS/JavaScript中两个等号 == 和 三个等号 === 的区别

JavaScript中两个等号 == 和 三个等号 === 的区别 (1)  "=="叫做相等运算符,"==="叫做严格运算符。 (2) ==,equality -> 等同  的意思, 两边值类型不同的时候,要先进行类型转换为同一类型后,再比较值是否相等。  ===,identity -> 恒等 的意思,不做类型转换,类型不同的结果一定不等 共2点结论: 1、编程建议:尽量使用严格运算符 ===。因为"=="不严谨,可能会带来一些违反直觉和意想不到的后果。 2、少用==:因为没有类型限制,类型转换的后果

有范管理美学 | 公众号/头条号:有范管理美学 3万+

Javascript中==与===有什么区别

对于==的判断1、并不是那么严谨的判断左右两端是否相等2、它会优先对比数据的类型是否一致3、不一致则进行隐式转换,一致则判断值的大小,得出结果4、继续判断两个类型是否为null与undefined,如果是则返回true5、接着判断是否为string与number,如果是把string转换为number再对比大小6、判断其中一方是否为boolean,如果是就转为numbe...

开发者导航 318

Js中==与===

JavaScript中提供相等运算符与=严格相等运算符,建议是只要变量的数据类型能够确定,一律使用=== ==相等运算符 在判断相等时会进行隐式的类型转换, 其比较遵循一些原则,即先转换类型再比较。 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值,即是调用Number()方法。 如果一个操作数是字符串,另一个是数值,在比较相等性之前先将字符串转换为数值,同样调用Number()方法。 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()和toString()方法把对象转换成基

weixin_45730243的博客 549
上一篇: JS 应用篇(一):Underfined与Null的区别
下一篇: JS 基础篇(一):创建对象的四种方式
madman0621
博客等级 码龄11年 36粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值