JavaScript 类型转换
本文讲述 JavaScript 不同数据类型转换的方法,包括:字符串与数字互转、日期与数字互转、布尔值与数字互转。
在有些编程场景下,我们需要将变量从一种数据类型转为另一种数据类型,这包括:
- 将字符串转换为数字
- 将数字转换为字符串
- 将日期转换为数字
- 将数字转换为日期
- 将布尔值转换为数字
- 将数字转换为布尔值
将字符串转换为数字
全局方法 Number()
可以将字符串转换为数字。
- 包含数字的字符串转换为数字(如
"3.14"
转换为3.14
)。 - 空字符串转换为
0
。 - 其他任何内容都转换为
NaN
(非数字)。
Number("3.14"); // 返回 3.14
Number(" "); // 返回 0
Number(""); // 返回 0
Number("99 88"); // 返回 NaN
在 JavaScript 数字方法一章中有更多将字符串转换为数字的方法:
方法 | 说明 |
---|---|
Number() |
将参数转为一个数字 |
parseFloat() |
将字符串参数转为浮点数 |
parseInt() |
将字符串参数转为整数 |
+
运算符
+
运算符可以将一个变量转换为一个数字:
let y = "5"; // y 是字符串
let x = +y; // x 是数字
如果变量不能被转换,它会转成 NaN
(NaN
的数据类型是数字):
let y = "John"; // y 是字符串
let x = +y; // x 是 `NaN`,类型是数字
将数字转换为字符串
全局方法 String()
可以将数字转换为字符串。
它可以用于任何类型的数字、文字、变量或表达式:
String(x); // 将 x 转为字符串
String(123); // 将 123 转为字符串
String(100 + 23); // 将 表达式的结果 123 转为字符串
Number 方法 toString()
执行相同的操作。
x.toString();
(123).toString();
(100 + 23).toString();
在 JavaScript 数字方法一章中有更多将数字转换为字符串的方法:
方法 | 说明 |
---|---|
toExponential() |
以指数表示法返回该数值字符串表示形式 |
toFixed() |
返回一个字符串,参数指定小数的位数。 |
toPrecision() |
返回一个字符串,参数指定了有效数字的位数。 |
将日期转换为数字
全局方法 Number()
可以将日期转换为数字。
d = new Date();
Number(d); // 返回 1404568027739
Date 对象的 getTime()
方法也将时间转化为距零时间的毫秒数。
d = new Date();
d.getTime(); // 返回 1404568027739
将日期转换为字符串
全局方法 String()
可以将日期转换为字符串。
String(Date()); // 返回 "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"
Date 方法 toString()
也做同样的事情。
Date().toString(); // 返回 "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"
将布尔值转换为数字
全局方法 Number()
还可以将布尔值转换为数字。
Number(false); // 返回 0
Number(true); // 返回 1
将布尔值转换为字符串
全局方法 String()
可以将布尔值转换为字符串。
String(false); // 返回 "false"
String(true); // 返回 "true"
布尔方法 toString()
执行也返回布尔值的字符串形式。
false.toString(); // 返回 "false"
true.toString(); // 返回 "true"
自动类型转换
当 JavaScript 尝试对不同的类型数据类型进行运算时,它会按照一定的规则自动转换类型。
结果并不总是您所期望的:
5 + null; // 返回 5,因为 null 被转换为 0
"5" + null; // 返回 "5null",因为 null 被转换为字符串 "null"
"5" + 2; // 返回 "52",因为 2 被转换为 "2"
"5" - 2; // 返回 3,因为 "5" 被转换为 5
"5" * "2"; // 返回 10,因为 "5" 和 "2" 被转换为 5 and 2