强制类型转换:指将一个数据类型强制转换为其他的数据类型,下面主要讲的是转换为String、Number、Boolean这三种类型。
方式一:调用被转换数据类型的toString()方法,该方法不会影响到原变量,它会将转换的结果返回。
语法格式:调用xxx的yyy()方法,就是xxx.yyy()。
注意:null和undefined这两个值没有toString()方法,如果调用该方法会报错。
方式二:调用String()函数,并将被转换的数据作为参数传递给函数。
底层说明:使用String()函数做强制类型转换时,对于Number和Boolean实际上底层就是调用toString()方法,但是对于null和undefined,就不会调用toString()方法。它会将null直接转换为字符串"null",将undefined直接转换为字符串"undefined"。
示例:
- <script>
- var a = 123;
- // 注意S必须要大写!
- var b = a.toString();
- console.log("调用toString()方法后,a的类型为",typeof a);
- console.log("b的类型为",typeof b);
- console.log("b的值为",b);
- // var a = null;
- // null值调用该方法会报错
- // console.log(a.toString());
- a=String(a);
- console.log("调用String()函数后,a的值为",a);
- console.log("调用String()函数后,a的类型为", typeof a);
- script>
转换方式一:调用Number()函数
字符串 --> 数字
1、如果是纯数字的字符串,则直接将其转换为数字。
2、如果字符串中有非数字的内容,则转换为NaN。
3、如果字符串是一个空串或者是一个全是空格的字符串,则转换为0。
4、布尔值转数字:true-->1、false-->0 。
5、undefined转数字:NaN 。
转换方式二:调用parseInt()函数、parseFloat()函数(此方式专门用于解析含数字的字符串)
parseInt(): 取出字符串中的有效的整数内容,然后转换为Number。(从左向右读取,遇到非整数暂停)
parseFloat():取出字符串中的有效的小数内容,然后转换为Number。(从左向右读取,遇到非整数或非小数暂停)
注意:对非字符串使用parseInt()或parseFloat(),它会先将其转换为字符串型然后再操作。
补充:数字的其他进制:
十进制(正常数字) :逢10进1,能够出现的数字是0-9
二进制(以0b(0B)开头):逢2进1,能够出现的数字是0-1
八进制(以0开头):逢8进1,能够出现的数字是0-7
十六进制(以0x(0X)开头):逢16进1,能够出现的数字是0-9以及a-f,a表示10,以此类推
示例:
- <script>
- console.log("调用Number()函数后,纯数字128转换为:",Number(128));
- console.log("调用Number()函数后,字符串中含非数字内容123abc转换为:",Number('123abc'));
- console.log("调用Number()函数后,空串转换为:",Number(''));
- console.log("调用Number()函数后,全是空格转换为:",Number(' '));
- console.log("调用Number()函数后,布尔值true转换为:",Number(true));
- console.log("调用Number()函数后,布尔值false转换为:",Number(false));
- console.log("调用Number()函数后,undefined转换为:",Number('undefined'));
-
- var a = 0x22;
- // 将a转为十进制,建议只转为10进制,转为其他进制时不是很准确
- a = parseInt(a,10)
- console.log("调用parseInt()函数后,16进制数字0x22转换10进制为:",parseInt(a));
- // 转换过程是从左至右,遇到非数字则解析结束。
- console.log("调用parseInt()函数后,带数字的字符串133px转换为:",parseInt('133px'));
- console.log("调用parseInt()函数后,带数字的字符串a133px转换为:",parseInt('a133px'));
- console.log("调用parseFloat()函数后,带小数的字符串133.456px转换为:",parseFloat('133.456px'));
- // 布尔值true转换成了字符串'true',然后解析
- console.log("调用parseFloat()函数后,布尔值true转换为:",parseFloat(true));
- script>
调用Boolean()函数
数字转换为布尔值:除了0和Nan,其余都是true
字符串转换为布尔值:除了空串,其余都是true
null、undefined转换为布尔值:false
示例:
-
- <script>
- console.log("调用Boolean()函数后,数字123转换为:",Boolean(123));
- console.log("调用Boolean()函数后,数字0转换为:",Boolean(0));
- console.log("调用Boolean()函数后,数字-13转换为:",Boolean(-13));
- console.log("调用Boolean()函数后,数字Infinity转换为:",Boolean(Infinity));
- console.log("调用Boolean()函数后,数字NaN转换为:",Boolean(NaN));
- console.log("调用Boolean()函数后,字符串'abc'转换为:",Boolean('abc'));
- console.log("调用Boolean()函数后,空字符串''转换为:",Boolean(''));
- console.log("调用Boolean()函数后,空值null转换为:",Boolean(null));
- console.log("调用Boolean()函数后,特殊值undefined转换为:",Boolean(undefined));
- script>