时间:2021-05-26
==、===都是相等运算符,这个大家应该都知道,但二者有什么区别呢?其实==是相等,===是严格相等,那他们有什么本质的区别呢?下面我就给大家细细道来。
==相等
比较两个值的时候,有两种情况,一种如果两个值的类型相同,就直接比较;另一种如果两个值得类型不同,则会尝试改变为相同的类型在进行比较
第一种很好理解,直接比较完事儿,第二种就更有趣一些,它到底是怎么转换的呢?下面我们一一列举
数字和字符串比较
99 == ''99"
大家猜一猜结果是什么True?False?
结果为True
其实JS在数字和字符串比较时,都是把字符串转换为数字,再对数字进行比较的,举个列子
99 == "chuichui"
JS是怎么转换的呢?
99 == NaN // false
JS尝试转换字符串'chuichui',但是该字符串并不能转换为数字,这时候转换的结果就为NaN
布尔值和其他类型比较
其实JS在布尔值和其他类型比较时,都是把布尔值转换为数字,再进行比较的,举个列子
1 == true
↓↓↓↓↓↓
1 == 1
JS会将true转化为数字1,再做比较
那"1" == true又是怎么比较的呢?
"1" == true
↓↓↓↓↓↓
"1" == 1
↓↓↓↓↓↓
1 == 1 // true
转换顺序
null和undefined比较
null == undefined
大家猜一猜,结果是True?False?
结果为True
是不是感觉很奇怪,但规则就是这样。我们可以理解为都是“没有值”
只不过一个是没有值得变量,一个是没有值的对象,因此他们相似
小心
有一个需要注意的地方,有些转换你可能猝不及防
false == ""
True?False?
结果为True
转换过程
下面我们在说说严格相等 ===
===严格相等
有了前面的相等的定义,我想大家能猜个八九不离十,严格相等就是类型和值完全相同,这里不存在以上所存在的转换问题
最后
操作数1 == 操作数2, 操作数1 === 操作数2
比较过程:
双等号==:
(1)如果两个值类型相同,再进行三个等号(===)的比较
(2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:
1)如果一个是null,一个是undefined,那么相等
2)如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
三等号===:
(1)如果类型不同,就一定不相等
(2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断)
(3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
(4)如果两个值都是true,或是false,那么相等
(5)如果两个值都引用同一个对象或是函数,那么相等,否则不相等
(6)如果两个值都是null,或是undefined,那么相等
到此这篇关于JS中==、===的文章就介绍到这了,更多相关JS中==、===内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在js中,this这个上下文总是变化莫测,很多时候出现bug总是一头雾水,其实,只要分清楚不同的情况下如何执行就可以了,以下就是我们给大家整理的相关内容:在Ja
说起云服务器和虚拟服务器,有好些人可能容易弄混,甚至以为就是同一种服务器,你真的分清云服务器和虚拟服务器了吗?你还在为怎么选择二者而犯愁?一起来看看,小编为你整
先申请退款,填写已经收到货物,需要退货,原因填写卖家少发货接下来,卖家会同意你的申专请,当卖家同属意退货后你再寄送商品过去,先说清楚运费谁承担,把责任分清楚。注
optgroup用在select标记中可以使下拉列表内容更加有条理复制代码代码如下:分清是非分清是非分清是非分清是非分清是非分清是非sub上标sup下标可与一起
2016淘宝违规扣分什么时候清零?2016淘宝违规扣分清零规则是什么?2016淘宝违规扣分清零规则你都知道吗?小编为你们总结了2016淘宝违规扣分清零规则,