类型转换
转换为字符串
提示
显式转换 我们也可以显式地调用 String(value) 来将 value 转换为字符串类型
隐式转换 console.log(value) 将 value 转换为字符串类型,然后显示这个值。
js
value = String(value); // 现在,值是一个字符串形式的 "true"
console.log(typeof value); // string
let value = true;
console.log(typeof value); // boolean1
2
3
4
5
2
3
4
5
字符串转换最明显。false 变成 "false",null 变成 "null" 等。
转换为数字型
在算术函数和表达式中,会自动进行 number 类型转换。
比如,当把除法 / 用于非 number 类型:
js
console.log( "6" / "2" ); // 3, string 类型的值被自动转换成 number 类型后进行计算1
我们也可以使用 Number(value) 显式地将这个 value 转换为 number 类型。
js
let str = "123";
console.log(typeof str); // string
let num = Number(str); // 变成 number 类型 123
console.log(typeof num); // number1
2
3
4
5
2
3
4
5
当我们从 string 类型源(如文本表单)中读取一个值,但期望输入一个数字时,通常需要进行显式转换。
如果该字符串不是一个有效的数字,转换的结果会是 NaN。例如:
js
let age = Number("an arbitrary string instead of a number");
console.log(typeof str); // string
console.log(age); // NaN,转换失败1
2
3
2
3
number 类型转换规则:
| 值 | 变成…… |
|---|---|
| undefined | NaN |
| null | 0 |
| true 和 false | 1 and 0 |
| string | 去掉首尾空白字符(空格、换行符 \n、制表符 \t 等)后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN。 |
例子:
js
console.log( Number(" 123 ") ); // 123
console.log( Number("123z") ); // NaN(从字符串“读取”数字,读到 "z" 时出现错误)
console.log( Number(true) ); // 1
console.log( Number(false) ); // 01
2
3
4
2
3
4
提示
请注意 null 和 undefined 在这有点不同:null 变成数字 0,undefined 变成 NaN。
大多数数学运算符都执行这种转换
转换为布尔型
它发生在逻辑运算中(稍后我们将进行条件判断和其他类似的东西)
也可以通过调用 Boolean(value) 显式地进行转换。
转换规则如下:
直观上为“空”的值(如 0、空字符串、null、undefined 和 NaN)将变为 false。
其他值变成 true。
js
console.log( Boolean(1) ); // true
console.log( Boolean(0) ); // false
console.log( Boolean("hello") ); // true
console.log( Boolean("") ); // false
console.log( Boolean("0") ); // true
console.log( Boolean("1") ); // true
console.log( Boolean(" ") ); // 空格,也是 true(任何非空字符串都是 true)
console.log( Boolean("true") ); // true
console.log( Boolean("false") ); // true
console.log( Boolean(NaN) ); // false
console.log( Boolean(undefined) ); // false1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
危险
请注意:包含 0 的字符串 "0" 是 true
一些编程语言(比如 PHP)视 "0" 为 false。
但在 JavaScript 中,非空的字符串( "0" 、 " ")总是 true。
boolean 类型转换规则:
| 值 | 变成…… |
|---|---|
| 0, null, undefined, NaN, "" | false |
| 其他值 | true |
上述的大多数规则都容易理解和记忆。
人们通常会犯错误的值得注意的例子有以下几个:
- 对 undefined 进行数字型转换时,输出结果为 NaN,而非 0。
- 对 "0" 和只有空格的字符串(比如:" ")进行布尔型转换时,输出结果为 true。