1、将其他的数据类型转换成String字符串类型
(1)toSring()
toString方法适用于number类型和boolean类型,如:
true.toString(); // "true"
(11).toString(); // "11"
但是对于null和undefined,使用这种方法会报错,如:
undefined.toString(); // Cannot read property 'toString' of undefined
null.toString(); // Cannot read property 'toString' of null
对于object,toSring方法结果不正确,结果永远是"[object Object]"
(2)String()
该方法适用于所有数据类型(除了对象,结果同toString()
)
String(obj); // "[object Object]"
String(11); // "11"
String(true); // "true"
String(undefined); // "undefined"
(3)+ '' 即使用+运算符加上空字符串(同样对object无效)
这个才是程序员的日常,这种方法的原理是:‘+’ 运算符只能相加相同的数据类型,如果两边的数据类型不同,他会优先将其转换成字符串来相加。因此就有一个很常见的坑:1+'1'
的结果是多少?这句话是按照字符串相加的规则来计算的,所以结果为"11"
使用此方法转换成字符串的例子如下:
true+""; // "true"
undefined+""; // "undefined"
obj+""; // "[object Object]"
11+""; // "11"
2、如何将其他的数据类型转换成Number数值类型?
(1)Number()
使用Number函数,可以将任意类型的值转化成数值。Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。
Number(324) // 324
Number('324') // 324
Number('324abc') // NaN
Number('') // 0
Number(true) // 1
Number(false) // 0
Number(undefined) // NaN
Number(null) // 0
(2)parseInt()
parseInt方法用于将字符串转为整数。
parseInt('1',10) // 1
parseInt('1.23',10) // 1
如果字符串头部有空格,空格会被自动去除。parseInt(' 81') // 81
如果parseInt的参数不是字符串,则会先转为字符串再转换。
字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分.
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') // 15
如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。
parseInt('abc') // NaN
parseInt('.3') // NaN
parseInt('') // NaN
parseInt('+') // NaN
parseInt('+1') // 1
parseInt()方法默认转换成十进制,不过需要注意的是,如果参数本身就是number类型,且是0x开头(16进制),那么parseInt方法会将其以相应的进制转换成十进制展示出来,而0o开头(八进制),0b开头(二进制),都会默认转换成十进制。
因此,为了防止意外解析成其他进制,建议添加第二个参数按照特定进制解析
parseInt('0016') //16
parseInt('0b11') //0
parseInt('0x16') // 22
parseInt('0x16',10) // 0
(3)parseFloat()
parseFloat方法用于将一个字符串转为浮点数。parseFloat('3.14') // 3.14
如果字符串符合科学计数法,则会进行相应的转换。
parseFloat('314e-2') // 3.14
parseFloat('0.0314E+2') // 3.14
如果字符串包含不能转为浮点数的字符,则不再进行往后转换,返回已经转好的部分。如:parseFloat('3.14more non-digit characters') // 3.14
parseFloat方法会自动过滤字符串前导的空格。如:parseFloat('\t\v\r12.34\n ') // 12.34
如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN。
parseFloat([]) // NaN
parseFloat('FF2') // NaN
parseFloat('') // NaN 注意,parseFloat会将空字符串转为NaN。
parseFloat的转换结果不同于Number函数的地方如下:
parseFloat(true) // NaN
Number(true) // 1
parseFloat(null) // NaN
Number(null) // 0
parseFloat('') // NaN
Number('') // 0
parseFloat('123.45#') // 123.45
Number('123.45#') // NaN
(4)程序员爱用的非常规方法:字符串 - 0
如:'22' - 0
(5)更加非常规的方法: + 字符串,这里的+并不是取正值的意思,负数一样可行
如:+ '22'
、+ '-011' ; // -11
3、如何将将其他数据类型转换为Boolean布尔类型?
(1)常规方法:Boolean(),如:
Boolean("ss"); // true
Boolean({}); // true
(2)程序员喜欢用的非常规方法 ,双重取反:!! x
,如:
!!"ss" ; // true
!!NaN ; // false
!!{} ; // true
(3)五个false值,即转换成Boolean后为false的值:
0 、 NaN 、 null 、 undefined 、‘’(空字符串)