盒子
盒子
文章目录
  1. ==和===有什么区别
  2. 原始类型的转换和比较
    1. number类型转换
    2. string类型转换
  3. Boolean类型转换
  4. null类型转换
  5. undefined类型转换
  6. 常见的类型转换的坑
  7. 引用类型比较

js中的比较问题

==和===有什么区别

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

原始类型的转换和比较

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

number类型转换

1
2
3
4
5
6
7
//number转string
String(0) //'0'
String(1) //'1'

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

string类型转换

1
2
3
4
5
6
7
8
9
//转为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类型转换

1
2
3
4
5
6
7
//转为number类型
Number(true) //1
Number(false) //0

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

null类型转换

1
2
3
Number(null)	//0
String(null) //'null'
Boolean(null) //false

undefined类型转换

1
2
3
Number(undefined)	//NaN
String(undefined) //'undefined'
Boolean(undefined) //false

常见的类型转换的坑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

{} == {} //
  • 并不能因为Boolean(2)结果为true,得出2 == true为true的结果。

引用类型比较

任意两个对象都不相同。

欢迎关注公众号
扫码关注我的微信公众号-大前端合集
  • 微信公众号-大前端合集