数据类型转换
转换为字符串类型
- 对于Number类型和Boolean类型来说, 可以通过 变量名称.toString()的方式来转换
let num = 123;
console.log(typeof num); // number
let str1 = num.toString();
console.log(typeof str1); // string
let value = true;
console.log(typeof value); // boolean
let str2 = value.toString();
console.log(typeof str2); // string
- 通过String(常量or变量);转换为字符串
let value1 = undefined;
console.log(typeof value1); // undefined
let str3 = String(value1);
console.log(typeof str3); // string
let value2 = null;
console.log(typeof value2); // object
let str4 = String(value2);
console.log(str4); // null
console.log(typeof str4); // string
let num1 = 123;
console.log(typeof num1); // number
let str5 = String(num1);
console.log(typeof str5); // string
let value3 = true;
console.log(typeof value3); // boolean
let str6 = value3.toString();
console.log(typeof str6); // string
- 通过 变量or常量 + “” / 变量or常量 + ''转换为字符串
let value4 = null;
let str7 = value4 + '';
console.log(typeof str7); // string
let num2 = 123;
let str8 = num2 + "";
console.log(typeof str8); // string
注意 :
- 变量名称.toString()的方式前面不能是常量, 因为常量不能被改变
- String(常量or变量), 因为是根据传入的值重新生成一个新的值, 并不是修改原有的值
- +’'或者+""底层的本质其实就是调用String()函数
转换为数值类型
在JavaScript中如果想将以上的四种基本数据类型转换为数值类型, 常用的方法有三种
- Number(常量or变量);
let str = '123p';
console.log(typeof str); // str
let num = Number(str);
console.log(num); // NaN
console.log(typeof num); // number
- 数学运算中的+号和-号来转换
- 虽然通过+/-都可以将其它类型转换为数值类型, 但是-会改变数值的正负性
- +/-底层本质上就是调用了Number函数
let str5 = '123';
let num5 = +str5;
console.log(num5); // 123
console.log(typeof num5); // number
let str6 = '123';
let num6 = -str6;
console.log(num6); // -123
console.log(typeof num6); // number
let str7 = 'null';
let num7 = -str7;
console.log(num7); // NaN
console.log(typeof num7); // number
- parseInt(需要转换的字符串)/parseFloat(需要转换的字符串)
- parseInt/parseFloat都会从左至右的提取数值, 一旦遇到非数值就会立即停止 , 停止的时候如果还没有提取到数值, 那么就返回NaN
- parseInt/parseFloat都会将传入的数据当做字符串来处理
let num8 = parseInt('123')
console.log(num8); // 123
console.log(typeof num8); // number
let num9 = parseInt('123q')
console.log(num9); // 123
console.log(typeof num9); // number
let num10 = parseInt('123.4')
console.log(num10); // 123
console.log(typeof num10); // number
let num11 = parseFloat('123');
console.log(num11); // 123
console.log(typeof num11); // number
let num12 = parseFloat('123.4');
console.log(num12); // 123.4
console.log(typeof num12); // number
let num13 = parseFloat('123p.4');
console.log(num13); // 123
console.log(typeof num13); // number
String类型转换为数值类型
- 如果字符串中都是数值, 那么就正常转换
- 如果字符串是一个空串"“或者” ", 那么转换之后是0
- 如果字符串中不仅仅是数字, 那么转换之后是NaN
let str = '123p';
console.log(typeof str); // str
let num = Number(str);
console.log(num); // NaN
console.log(typeof num); // number
let str1 = '123';
console.log(typeof str1); // string
let num1 = Number(str1)
console.log(typeof num1); // number
Boolean类型转换为数值类型
- true转换之后是1
- false转换之后是0
let bool1 = true;
let num14 = Number(bool1);
console.log(num14); // 1
console.log(typeof num14); // number
let bool1 = false;
let num15 = Number(bool1);
console.log(num15); // 0
console.log(typeof num15); // number
undefined类型转换为数值类型
- 转换之后是NaN
let str2 = 'undefined';
let num2 = Number(str2);
console.log(num2); // NaN
console.log(typeof num2); // number
null类型转换为数值类型
- 转换之后是0
let str3 = null;
let num3 = Number(str3);
console.log(num3); // 0
console.log(typeof num3); // number
注意
- 如果字符串中没有数据, 那么转换的结果是0
- 如果字符串中的数据不仅仅是数值, 那么转换的结果是NaN
- 如果是布尔类型的true, 那么转换之后的结果是1
- 如果是布尔类型的false, 那么转换之后的结果是0
- 如果是空类型, 那么转换之后的结果是0
- 如果是未定义类型, 那么转换之后的结果是NaN
总结 : 空字符串/false/null转换之后都是0 ; 字符串中不仅仅是数字/undefined转换之后是NaN ; 其它的正常转换
转换为布尔类型
在JavaScript中如果想将基本数据类型转换为布尔类型, 那么只需要调用Boolean(常量or变量)
String类型转换为布尔类型
只要字符串中有内容都会转换为true, 只有字符串中没有内容才会转换为false
// str => bool
let str1 = 'asd';
console.log(typeof str1); // string
let bool5 = Boolean(str1);
console.log(bool5); // true
console.log(typeof bool5); // boolean
let str2 = ' ';
console.log(typeof str2); // string
let bool6 = Boolean(str2);
console.log(bool6); // true
console.log(typeof bool6); // boolean
let str3 = '';
console.log(typeof str3); // string
let bool7 = Boolean(str3);
console.log(bool7); // false
console.log(typeof bool7); // boolean
将Number类型转换为布尔类型
只有数值是0才会转换为false, 其它的都会转换为true
如果是NaN也会转换为false
// num => bool
let num1 = 123;
console.log(typeof num1); // number
let bool1 = Boolean(num1);
console.log(bool1); // true
console.log(typeof bool1); // boolean
let num2 = 0;
console.log(typeof num2); // number
let bool2 = Boolean(num2);
console.log(bool2); // false
console.log(typeof bool2); // boolean
let num3 = NaN;
console.log(typeof num3); // number
let bool3 = Boolean(num3);
console.log(bool3); // false
console.log(typeof bool3); // boolean
将undefined类型转换为布尔类型
undefined会转换为false
// undefined => bool
let num4 = undefined;
console.log(typeof num4); // undefined
let bool4 = Boolean(num4);
console.log(bool4); // false
console.log(typeof bool4); // boolean
将null类型转换为布尔类型
null会转换为false
// null => bool
let str4 = null;
console.log(typeof str4); // object
let bool8 = Boolean(str4);
console.log(bool8); // false
console.log(typeof bool8); // boolean