JavaScript——JS中的"=="转换规则

我们知道,“=”、“==” 和“===”这三者之间是不一样的。具体怎样的不一样呢?今天来说说“==”的转换规则。

下面是一张“==”强制转换规则表。

参数类型1参数类型2强制转换
nullundefined不转换,总是返回true
null或undefined其它任何非null或undefined的类型不转换,总是返回false
原始类型:string、number或booleanDate对象将原始类型转换成数字;将Date对象转换为原始类型。(优先尝试toString方法,再尝试valueOf方法)
原始类型:string、number或boolean非Data对象将原始类型转换成数字;将非Date对象转换为原始类型。(优先尝试toString方法,再尝试valueOf方法)
原始类型:string、number或boolean原始类型:string、number或boolean将原始类型转换成数字

看了上面的表,我们再来细说一下==的个别常遇见的转换规则。 

1.number类型与string类型比较,string会转换为number类型

        '' == '0' //false
        0 == ''//true;
        0 == '0'//true
        ' \t\r\n '==0//true

2.null和undefined类型比较始终相等

null == undefined //true

我之前有写过一篇null和undefined的区别的文章,有兴趣的话可以移驾看看哦~

文章链接:JavaScript——undefined与null的区别

 

3.布尔类型与其它任何类型进行比较,布尔类型将会转换为number类型

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

 

4.number类型或string类型与object类型进行比较,number或者string类型都会转换为object类型

        var a = 0, b = {}; 
        a == b//false

 

从上面的表和这四种例子来看,==的转换规则并不够严谨,如果语句需要特别严谨的话,珍爱生命,请使用===和!===

 

Biu~~~~~~~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值