数据类型转换
# 数据类型转换
# 1. 强制类型转换
强制类型转换,也称为显式转换,是指通过使用特定的方法或运算符,将一种数据类型转换为另一种数据类型。以下是常用的强制类型转换方法:
# 1.1 转换为 number
有三种方式将数据转换为 number 类型:
使用
Number()- 如果内容可以转换成数字,则返回对应的数字(整数或小数)。
- 如果内容不可以转换成数字,则返回
NaN。 - 如果内容为空字符串或
null,则返回0。 - 如果内容为
boolean,则true返回1,false返回0(因为boolean值在内存中是以数字存储的,true为1,false为0)。
console.log(Number("123")); // 输出 123 console.log(Number("123.45")); // 输出 123.45 console.log(Number("abc")); // 输出 NaN console.log(Number("")); // 输出 0 console.log(Number(null)); // 输出 0 console.log(Number(true)); // 输出 1 console.log(Number(false)); // 输出 01
2
3
4
5
6
7使用
parseInt()- 将内容转换成整数(直接去掉小数)。
- 会从第一个字符开始解析,直到遇到非数字符号停止,并返回已解析的部分数值。
console.log(parseInt("123.45")); // 输出 123 console.log(parseInt("123abc")); // 输出 123 console.log(parseInt("abc123")); // 输出 NaN1
2
3使用
parseFloat()- 将内容转换成小数。
console.log(parseFloat("123.45")); // 输出 123.45 console.log(parseFloat("123abc")); // 输出 123 console.log(parseFloat("abc123")); // 输出 NaN1
2
3
# 1.2 转换为 string
有三种方式将数据转换为 string 类型:
拼接空字符串
- 直接使用
"" + 要转换的内容。
console.log("" + 123); // 输出 "123" console.log("" + true); // 输出 "true"1
2- 直接使用
使用
String()- 将要转换的内容放在
String后的小括号中。
console.log(String(123)); // 输出 "123" console.log(String(true)); // 输出 "true"1
2- 将要转换的内容放在
使用
toString()- 直接调用变量的
toString()方法。
var num = 123; console.log(num.toString()); // 输出 "123" var bool = true; console.log(bool.toString()); // 输出 "true"1
2
3
4- 直接调用变量的
# 1.3 转换为 boolean
有两种方式将数据转换为 boolean 类型:
使用
Boolean()false、0、空字符串、undefined、null、NaN会被转换成false。- 其他的都会被转成
true。
console.log(Boolean(0)); // 输出 false console.log(Boolean("")); // 输出 false console.log(Boolean(null)); // 输出 false console.log(Boolean(NaN)); // 输出 false console.log(Boolean(123)); // 输出 true console.log(Boolean("Hello")); // 输出 true1
2
3
4
5
6使用
!!转换- 双重否定,强制将值转换为
boolean类型。
console.log(!!0); // 输出 false console.log(!!123); // 输出 true console.log(!!""); // 输出 false console.log(!!"Hello"); // 输出 true1
2
3
4- 双重否定,强制将值转换为
# 2. 自动类型转换
自动类型转换,也称为隐式转换,是指 JavaScript 会在需要的时候自动将一种数据类型转换为另一种数据类型。以下是自动类型转换的常见情况:
在参与
-、*、/、%等运算时会自动转换为numberconsole.log("123" - 0); // 输出 123 console.log("123.45" * 1); // 输出 123.45 console.log("123" / "3"); // 输出 41 console.log("123" % 2); // 输出 11
2
3
4直接在要转换的内容前添加
+- 这个方法常用于将字符串转换为数字。
console.log(+"123"); // 输出 123 console.log(+"123.45"); // 输出 123.45 console.log(+"abc"); // 输出 NaN1
2
3
# 3. 综合示例
以下是一个综合示例,演示了强制类型转换和自动类型转换:
var str = "123";
var num = 456;
var bool = true;
var nullValue = null;
var undefinedValue;
var nanValue = NaN;
// 强制类型转换
console.log(Number(str)); // 123
console.log(parseInt(str)); // 123
console.log(parseFloat("123.45")); // 123.45
console.log(String(num)); // "456"
console.log(bool.toString()); // "true"
console.log(Boolean(str)); // true
console.log(!!num); // true
// 自动类型转换
console.log(str - 0); // 123
console.log(str * 1); // 123
console.log(str / "3"); // 41
console.log("123" % 2); // 1
console.log(+str); // 123
// 检查类型转换的结果
console.log(Number("abc")); // NaN
console.log(String(nullValue)); // "null"
console.log(Boolean(undefinedValue)); // false
console.log(parseInt(nanValue)); // NaN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#
编辑此页 (opens new window)