1.0强制类型转换
指将一个数据类型强制转换为其他的数据类型
类型转换主要指: 将其他的数据类型转换为 String Number Boolean
2.0 转换为String
2.1 方法一:
调用被转换数据类型的toString()方法 => 被转换类型 . toString()
该方法不会影响到原变量,它会将转换的结果返回且该方法也有局限性
注意:null和undefined这两个值没有toString() 方法,如果调用会直接报错
<script>
var num = 27;
num = num.toString();
console.log(typeof num);
console.log(num);
</script>
2.2 方法二:
调用String()函数,并将被转换的数据作为参数传递给函数
使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法
但是对于null和undefined, 就不会调用toString()方法,它会将null直接转换为字符串null => 'null'
将undefined直接转换为字符串undefined => 'undefined'
<script>
var num = 27;
num = String(num);
console.log(typeof num);
console.log(num);
<script>
3.0 转换为 Number
3.1 方法一:
使用Number()函数
字符串转换为数字
- 如果是纯数字的字符串,则直接将其转换为数字
- 如果字符串中有非数字的内容,则转换为NaN
- 如果字符串是一个空串或者是一个全是空格的字符串,则转换为0
<script>
//调用Number()函数来将a转换为Number类型
var sum = "727";
a = Number(a);
console.log(typeof a);
console.log(a);
</script>
布尔值转换为数字
- true 转成 1
- false 转成 0
Null转换为数字是 => 0
undefined 转换为数字 => NaN
3.2 方法二
这种方式专门用来对付字符串
- parseInt() 把一个字符串转换为一个整数
parseInt()可以将一个字符串中的有效的整数内容去出来,然后转换为Number
- parseFloat() 把一个字符串转换为一个浮点数
parseFloat()作用和parseInt()类似,不同的是它可以获得有效的小数
<script>
//parseInt()方法
var num = "123a456px";
//调用parseInt()函数将a转换为Number
num = parseInt(num);
console.log(typeof num);
console.log(num);
//parseFloat()方法
var a = "123.456px"
a = parseFloat(a);
console.log(typeof a);
console.log(a);
</script>
- 如果对非String使用parseInt()或parseFloat(),它会先将其转换为String然后再操作
<script>
var b = 119.27;
b = parseInt(b);
console.log(typeof b);
console.log(b);
</script>
4.0 其他进制的数字
在JS中
- 如果需要表示16进制的数字,则需要以0x开头
输出时,会直接转换为数字
- 如果需要表示8进制的数字,则需要以0开头
- 如果需要表示2进制的数字,则需要以0b开头
- 但是,并不是所有的浏览器都支持
<script>
//十六进制
var a = 0x11,
//八进制
b = 011,
//二进制
c = 0b11;
console.log(a);
console.log(b);
console.log(c);
</script>
- 向 "070" 这种字符串,有些浏览器会当成八进制进行解析,有些会当成十进制进行解析
- 可以在parseInt()中传递一个第二个参数,来指定数字的进制
<script>
var d = "070";
d = parseInt(d,10);
console.log(typeof d);
console.log(d);
</script>
5.0 转换为Boolean
方法: 使用Boolean() 函数
- 数字转换为布尔值 => 除了0和NaN, 其余都是true
- 字符串转换为布尔值 => 除了空字符串,其余都是true
- 特别注意: null 和 undefined 都会转换为 false