数据类型转换
# 数据类型转换
# 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)); // 输出 0
1
2
3
4
5
6
7使用
parseInt()
- 将内容转换成整数(直接去掉小数)。
- 会从第一个字符开始解析,直到遇到非数字符号停止,并返回已解析的部分数值。
console.log(parseInt("123.45")); // 输出 123 console.log(parseInt("123abc")); // 输出 123 console.log(parseInt("abc123")); // 输出 NaN
1
2
3使用
parseFloat()
- 将内容转换成小数。
console.log(parseFloat("123.45")); // 输出 123.45 console.log(parseFloat("123abc")); // 输出 123 console.log(parseFloat("abc123")); // 输出 NaN
1
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")); // 输出 true
1
2
3
4
5
6使用
!!
转换- 双重否定,强制将值转换为
boolean
类型。
console.log(!!0); // 输出 false console.log(!!123); // 输出 true console.log(!!""); // 输出 false console.log(!!"Hello"); // 输出 true
1
2
3
4- 双重否定,强制将值转换为
# 2. 自动类型转换
自动类型转换,也称为隐式转换,是指 JavaScript 会在需要的时候自动将一种数据类型转换为另一种数据类型。以下是自动类型转换的常见情况:
在参与
-、*、/、%
等运算时会自动转换为number
console.log("123" - 0); // 输出 123 console.log("123.45" * 1); // 输出 123.45 console.log("123" / "3"); // 输出 41 console.log("123" % 2); // 输出 1
1
2
3
4直接在要转换的内容前添加
+
- 这个方法常用于将字符串转换为数字。
console.log(+"123"); // 输出 123 console.log(+"123.45"); // 输出 123.45 console.log(+"abc"); // 输出 NaN
1
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)
上次更新: 2024/12/28, 18:32:08