先洗脑一番,JavaScript有7种数据类型,分别是
- Number
- String
- Boolean
- Null
- Undefined
- Object
- Symbol
其中Number、String、Boolean、Null、Undefined属于简单数据类型,
Object属于复杂数据类型,现就描述一下简单数据类型之间的转换。
Number
Number转String
数字1和对象1的区别
1
var a=new Number(1);
以上是两种不同的声明方式,下面我们在浏览器里输出两个变量,看得到的分别是是什么。

__proto__属性可以,里面有很多可使用的函数,而数字就打出就是一个孤零零的1。
通过这个就可以看出对象1和数字1最显而易见的区别,那就是对象1拥有其他可调用的函数,并且可以扩展一些自定义的函数,来强大自己,功能能多,使用起来更方便。看到这些方法我们已经知道怎么把对象1转换为String 了,那就是直接调用自己的toString()方法。

String很简单,它自己已经实现了这个方法,那么数字1怎么转换呢,有意思的来了。
数字1转换String的方法还是有很多的,黑科技上场了。
- 使用()可以模仿对象调用toString()
(1).toString()
// "1"
这个方法在内部执行的属性应该是这样的,在()调用toString()的时候
var temp=new Number(1);
return temp.toString()
创建了一个临时的变量它就是对象1,其实返回的还是对象1的执行结果。
- 使用
''
1 + ''
1 + ""
'' + 1
"" + 1
直接在1的前面或者后面加上''或者""简单粗暴。使用起来更方便。
Number转Boolean
Boolean是一个比较简单的类型,只有两个值,true和false。
var a=1;
var b=Boolean(a);
//true
var a=0;
var b=Boolean(a);
//false
var a=NaN;
var b=Boolean(a)
//false
与布尔之间的转换比较简单,直接使用Boolean就可以,但是有一点要注意的是,NaN对应的布尔值是false
总结:
Number中0与NaN对应的是false,其他都是true(包括负数)
String
String转Number
JS提供了两种方法把String转为Number,分别是parseInt(),parseFloat()。前者是把字符串转换成整数,后者则是把字符串装换成浮点型,并且只有String类型调用这些方法才有效,其他类型调用则返回NaN。
parseInt
parseInt('1'); //1
parseInt('1j3'); //1
parseInt('a1234'); //NaN
parseInt('');//NaN
上面的代码中,parseInt()的参数都是字符串,结果只返回字符串头部可以转为数字的部分。如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。
parseInt还可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数,是有它的第二个参数决定的。
parseInt('1000', 2) // 8
parseInt('1000', 6) // 216
parseInt('1000', 8) // 512
如果第二个参数不是数值,会被自动转为一个整数。这个整数只有在2到36之间,才能得到有意义的结果,超出这个范围,则返回NaN。如果第二个参数是0、undefined和null,则直接忽略。
parseFloat
parseFloat会将一个字符串转换为浮点数。
parseFloat('1.234') //1.234
如果字符串符合科学计数法,也会进行相应的转换。
parseFloat('1.23e-3'); //0.00123
parseFloat('1.23e+3'); //1230
如果碰到不能转成浮点的字符,则会停止,返回已经转好的字符。
parseFloat('1.234fe345'); //1.234
如果不是字符串或者第一个字符不能转换成浮点数(正负号除外),则返回NaN。
parseFloat(''); //NaN
parseFloat({}); //NaN
parseFloat('-1.234'); //-1.234
parseFloat('a1.234'); //NaN
String 转Boolean
Boolean('a');//true
Boolean('');//false
Boolean("");//false
Boolean('-123');//true
字符串除了
''是false其他都是true
Boolean
String
String中除了''转换成布尔是false,其他值都是对应true。
Number
Boolean(1);//true
Booolean(0);false
Boolean(-2);//true
Boolean(NaN);//false
Number中除了0和Number转成布尔对应是false,其他都是true;
Null&Undefined
Boolean(null);//false
Boolean(Undefined);//fasle
Null和Undefined永远是false
Object
Boolean({name:1});//true
Boolean({});//true
Boolean([]);//true
Object永远是true