强制类型转换
05 强制类型转换
作者:FL
博客:https://www.cnblogs.com/flblogs/
String
-
将其他数据类型转换为String
-
方式一:调用数据类型的toString()方法
- toString方法不会影响原变量,而是将转换的结果返回
- 注意:toString方法不能转换null和unidentified
var a = 123;
a =a.toString();
console.log(a);
console.log(typeof a);
a = null;
// a = a.toString();//Uncaught TypeError
console.log(a);
console.log(typeof a);
a = undefined;
// a = a.toString();//Uncaught TypeError
console.log(a);
console.log(typeof a);
- 方式二:String(要转换的变量)
- 这种方法也可以转换null和unidentified
- String(变量)方法对于null和unidentified,直接转换为字符串,其他类型与toString()相同
a = null;
a = String(a)
console.log(a);//null
console.log(typeof a);//string
a = undefined;
a = String(a);
console.log(a);//undefined
console.log(typeof a);//string
Number
- 注意:没有toNumber方法
- 方式一:调用Number()方法
- String -> Number:
- 如果是纯数字,直接转换为Number
- 如果是空格,转化为0
- 把一个不能转换为Number的值强制转换,结果为NaN,例如“张三” -> NaN
- null -> 0
- Boolean -> Number: true -> 1,false -> 0
- Undefined -> 0
- String -> Number:
a = Number(a);
console.log(a);
console.log(typeof a);
- 方式二:调用parseInt()、parseFloat()方法
- 作用:将字符串最前面是数字的字符串直接转换为数组
- 对于非String使用,会先将其转换为String在操作
let b = "123abc456";
b = parseInt(b);
console.log(b);//123
console.log(typeof b);
let c = true;
c = parseInt(c);
console.log(c);//NaN
console.log(typeof c)
- 表示其他进制的数字:
// 其他进制的数字
let d = 0x123;//16进制 0x开头
d = 0b10;//二进制 0b开头,有的浏览器可能不支持
d = 0o70;//八进制 0o开头
d = parseInt(d,8);//指定数字进制
console.log(d);//输出时会以十进制输出
console.log(typeof d);
Boolean
- 使用Boolean()
- 数字 -> 布尔 :除了0和NaN,其余都是true
- 字符串 -> 布尔 : 除了空串,其余都是true
- null和undefined -> 布尔: 都是false
- 对象也会转换为true
let a = 6;
a = Boolean(a);
console.log(a);
console.log(typeof a);
let b = "1344za";
a = Boolean(b);
console.log(b);
console.log(typeof b);