js数据类型
Number:数字类型
- String:字符串类型
- Boolean:布尔类型
- Null:空
- Undefined:未定义
- Symbol:标志
- Object:对象
其中1-6是js基本类型,7是引用类型
转换成字符串:
Number=>String 4=>'4' 4.2=>'4.2' 0=>'0'
Boolean => String true => 'true' false=>'false'
Null => String null => 'null'
Undefined=>String undefined => 'undefined'
Symbol => String
var a = Symbol('a')
a=>'symbol("a")'
Object => String
o.toString()
转换成数字
String=>Number
''=>0
'1' =>1
'2q'=>NaN
'1.2' => 1.2
'1.' => 1
Boolean=>Number
true=>1
false=>0
Null=>Number
null=>0
Undefined=>Number
undefined=>0
Symbol=>Number
Symbol不能转成Number
Object=>Number
o.valueOf()/o.toString()
调用上面的方法,把Object转换成基本类型,然后按照基本类型转换成Number
转换成Boolean
Number=>Boolean
1=>true
+0=>false
-0=>false
1.2=>true
String=>Boolean
''=>false
'aaa' => true
Null=>Boolean
null=>false
Undefined=>Boolean
undefined=>false
Symbol=>Boolean
var a = Symbol()
a=>true
Object=>Boolean
o.valueOf/o.toString
调用上面两个方法把Object转换成基本类型,再按照基本类型转换成Boolean
==与===的区别
==宽松相等,允许使用==具体的强制转换
===严格相等,不允许使用==具有的强制转换==的强制转换
1.a==b
其中a为数字,b为字符串时,判断a==Number(b)
2.a==b
其中a为字符串,b为数字时,判断Number(a) == b
3.a==b
其中a为Boolean时,判断Number(a) == b
b为Object时调用valueOf或者toString转换成基本类型
4.a==b
其中a为undefined,b只有等于undefined或者null时才相等
== 判断中undefined只等于undefined或者null
== 判断中null值等于undefined或者null
5.a==b
其中a=NaN
NaN不等于任何值,包括自身
6.a==b
Object类型都调用valueOf或者toString方法转换成基本类型,进行对比
若a,b均为Object类型,==判断时是判断a,b指向的是不是同一个值
网友评论