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 是数字

如果变量不能被转换,它会转成 NaNNaN 的数据类型是数字):

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