很多时候需要进行类型的转换才能正确地处理数据。比如用户输入或从文件中读取的数值, JavaScript 会将其视为字符串,如果我们要将其作为数字处理则必须事先经过类型的转换。

数字转换

比如用户输入的年龄数据就是一个字符串类型,而它更应该是数字类型。

$$edit$$
$$jsdemo$$
let age = prompt("请输入你年龄")
alert(typeof age) // string,字符串类型

这会可以用 Number(value) 显示地进行类型转换。

$$jsdemo$$
$$edit$$

let age = prompt("请输入你年龄")
alert(typeof age) // string,字符串类型

age = Number(age) // 转换为 number 类型

alert(typeof age) // number,数字类型

常见的数字类型转换如下:

Number(" 123 ") // 123,字符串会去掉首尾空格
Number("abc") // NaN,不是数字则为 NaN
Number(undefined) // NaN
Number(null) // 0
Number(true) // 1
Number(false) // 0

布尔转换

布尔类型的转换规则如下:

  • false:0、空字符串、null、undefined、NaN。
  • true:其余情况。
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false

Boolean(-1) // true
Boolean("abc") // true

字符串转换

字符串的转换的结果总是”它们看起来的样子”。

String(123) // "123"
String(true) // "true"
String(false) // "false"

String(undefined) // "undefined"
String(null) // "null"
String(NaN) // "NaN"

一些类型转成字符串再转回来的值可能会不一样。

Boolean(String(false)) // true

显式与隐式转换

像上面的例子中使用类型转换的方式都被称为显式转换。除此之外的都被称为隐式转换。

String(123) // 显式转换
alert(123) // alert 的参数会被隐式转换为字符串

8 > "5" // true, 比较运算符一边操作数为数字时,另一边也会隐式转换为数字

// if 条件的值会被隐式转换为 boolean 值
if (5) {
    alert("总是执行")
}