JS的数据类型共有:String,Boolean,Number,Undefined,Null,Object,其中String、Boolean、Number可以相互转换,而转换方式又分为显示类型转换及隐式类型转换。
显示类型转换
1其他类型数据转换为Number
Nunber(123) #转换为123
Number('123') #转换为123
Number('123abc') #转换为NaN
Number(true) #转换为1
Number(false) #转换为0
Number(null) #转换为0
Number(undefined) #转换为NaN
Number('') #转换为0
Number({a: 1}) #转换为NaN
Number([1,2,3]) #转换为NaN
Number([4]) #转换为4
parseInt('123abc') #转换为123
parseInt('123.45') #转换为123
parseInt([1,2,3]) #转换为1
parseInt([4]) #转换为4
parseFloat(‘123’) #转换为123
parseFloat(‘123abc’) #转换为123
parseFloat(‘123.45abc’) #转换为123.45
String(123) #转换为'123'
String(123abc) #转换为'123abc'
String(undefined) #转换为'undefined'
String(false) #转换为'false'
String(true) #转换为'true'
String(null) #转换为'null'
String('') #转换为''
String({a: 1}) #转换为'[object Object]'
String([1,2,3]) #转换为'1,2,3'
String([4]) #转换为'4'
String([]) #转换为''
123.toString() #转换为'123'
123abc.toString() #转换为'123abc'
true.toString() #转换为'true'
null.toString() #报错
undefined.toString() #报错
NaN.toString() #转换为'NaN'
{a: 1}.toString() #转换为'[object Object]'
[1,2,3].toString() #转换为'1,2,3'
[4].toString() #转换为'4'
Boolean('123') #转换为true
Boolean('123abc') #转换为true
Boolean(0) #转换为false
Boolean(0.0) #转换为false
Boolean(undefined) #转换为false
Boolean(null) #转换为false
Boolean(NaN) #转换为false
Boolean('') #转换为false
Boolean({a: 1}) #转换为true
Boolean([1,2,3]) #转换为true
Boolean([]) #转换为true
隐式类型转换
除了+号有可能把运算子转为字符串,其他运算符都会把结果自动转成数值
'5' + 0 = '50' #值为string类型
'5' + [] = '5' #值为string类型
'5' + [4] = '54' #值为string类型
'5' + [1,2,3] = '51,2,3' #值为string类型
'5' + {} = '5[object Object]' #值为string类型
'5' + true = '5true' #值为string类型
'5' + null = '5null' #值为string类型
5 + null = 5 #值为number类型
5 + undefined = NaN #值为number类型
5 + true = 6 #值为number类型
5 + false = 5 #值为number类型
5 + [] = '5' #值为string类型
5 + {} = '5[object Object]' #值为string类型
'5' - 0 = 5 #值为number类型
'5' - '1' = 4 #值为number类型
'5' - 'abc' = NaN #值为number类型
'5' * 0 = 0 #值为number类型
'5' - true = 4 #值为number类型
'5' - false = 5 #值为number类型
'5' - null = 5 #值为number类型
'5' - undefined = NaN #值为number类型
'5' - NaN = NaN #值为number类型
'5' - {} = NaN #值为number类型
'5' - {a:1} = NaN #值为number类型
'5' - [] = 5 #值为number类型
'5' - [1] = 4 #值为number类型
'5' - [1,2,3] = NaN #值为number类型
if(0){ console.log('显示数据')} #不显示
if(0.0){ console.log('显示数据')} #不显示
if(1){ console.log('显示数据')} #显示
if(false){ console.log('显示数据')} #不显示
if(true){ console.log('显示数据')} #显示
if(null){ console.log('显示数据')} #不显示
if(undefined){ console.log('显示数据')} #不显示
if(NaN){ console.log('显示数据')} #不显示
if({}){ console.log('显示数据')} #显示
if([]){ console.log('显示数据')} #显示
5 > 1 #值为true
'5' > '1' #值为true
NaN == NaN #值为false
null == undefined #值为true
null === undefined #值为false
null == 0 #值为false
undefined == 0 #值为false