强制类型转换
强制类型转换:指将一个数据类型强制转换为其他的数据类型,下面主要讲的是转换为String、Number、Boolean这三种类型。
将其他的数据类型转换为String型
方式一:调用被转换数据类型的toString()方法,该方法不会影响到原变量,它会将转换的结果返回。
语法格式:调用xxx的yyy()方法,就是xxx.yyy()。
注意:null和undefined这两个值没有toString()方法,如果调用该方法会报错。
方式二:调用String()函数,并将被转换的数据作为参数传递给函数。
底层说明:使用String()函数做强制类型转换时,对于Number和Boolean实际上底层就是调用toString()方法,但是对于null和undefined,就不会调用toString()方法。它会将null直接转换为字符串"null",将undefined直接转换为字符串"undefined"。
示例:
<body>
<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>
</body>
将其他的数据类型转换为Number型
转换方式一:调用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,以此类推
示例:
<body>
<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>
</body>
将其他的数据类型转换为Boolean型
调用Boolean()函数
数字转换为布尔值:除了0和Nan,其余都是true
字符串转换为布尔值:除了空串,其余都是true
null、undefined转换为布尔值:false
示例:
<body>
<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>
</body>