不同类型值相比较的规则和类型转换、隐式转换

本文详细解析了JavaScript中相等运算符(==)的工作原理,包括遇到不同类型的变量时的转换规则,如数字与字符串、布尔值、以及对象与原始值之间的比较逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相等运算符(==) 在遇到两个操作数类型不同的时候,要遵守的规则和类型转换 
1、如果-个值是null, 另一个是undefined,则它们相等 
null == undefined //返回true 
2、如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较。

1 == "1" //1==1  //结果是true
2 == "1" //2==1  //结果是false

3、如果其中一个值是true,则将其转换为1再进行比较。如果其中一个值是false,则将其转换为0再进行比较。

"1" == true     //1==1 结果是true
0 == false      //0==0 结果是true

4、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,然后再进行比较。对象通过toString()方法或者valueOf()方法转换为原始值,JavaScript语言核心的内置类先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只能使用toString()转换,那些不是JavaScript语言核心中的对象则通过各自的实现中定义的方法转换为原始值。

原始值:不可变更的值,包括undefined、null、布尔值、数字、和字符串。

所有的对象都有toString()  valueOf()这两个方法。 
toString()方法的作用是,返回一个反映这个对象的字符串。 
valueOf()方法的作用是,一个对象那个如果存在任意原始值,它就默认将对象转换为表示它的原始值。

5、其他不同类型之间的比较均不相等。

转载于:https://my.oschina.net/mdu/blog/3060601

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值