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

,