JS中的比较问题

== 和 ===有什么区别

​ 在使用==时,如果左右两边的类型不同,就会进行转换,然后再比较值。在使用===时,直接比较左右两边的类型和值,如果类型不同,结果直接为false。

原始类型的转换和比较

Number()转换为数字,String()转换为字符串,Boolean转换为布尔值。

number类型转换

//number转string
String(0)	//'0'
String(1)	//'1'

//number转Boolean
Boolean(0)	//false
Boolean(1)	//true
  • number转为string类型时,直接加上引号即可。
  • number转为Boolean类型时,除0为false外,其他都为true。

string类型转换

//转为number类型
Number('0')		//0
Number('a')		//NaN
Number('\t')	//0

//转为Boolean类型
Boolean('0')	//true
Boolean('')		//false
Boolean('/tr')	//true
  • string转为number类型时,去掉引号为数字则结果为相应的数字,否则返回NaN。\t、\r、\n转为number类型时结果为0。
  • string转为Boolean类型时,除空字符串为false外,其他都为true。

Boolean类型转换

//转为number类型
Number(true)	//1
Number(false)	//0

//转为string类型
String(true)	//'true'
String(fasel)	//'false'
  • Boolean只有true和false两个值,转为number分别为1和0。

null类型转换

Number(null)	//0
String(null)	//'null'
Boolean(null)	//false

undefined类型转换

Number(undefined)	//NaN
String(undefined)	//'undefined'
Boolean(undefined)	//false

常见的类型转换的坑

0 == ''			//true
0 == '0'		//true

2 == true		//false
2 == false		//false

false == 'false'	//false
false == ''			//true

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

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

[] == [] 			//false
[] == ![]			//true

{} == {}			//false

0.1 + 0.2 != 0.3 	//true
  • 并不能因为Boolean(2)结果为true,得出2 == true为true的结果。
    个人微信公众号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值