主题
类型转换
大多数情况下,运算符和函数会自动将赋予它们的值转换为正确的类型。
比如,alert
会自动将任何值都转换为字符串以进行显示。算术运算符会将值转换为数字。
在某些情况下,我们需要将值显式地转换为我们期望的类型。
字符串转换
js
String(1.12) // "1.12"
1.12.toString() // "1.12"
1.12 + "" // "1.12"
数字型转换
js
"12" - 1 // 11
"12" * 2 // 23
"12" / 3 // 4
"12" % 4 // 0
Number("12.1") // 12.1
Number("abc") // NaN
Number("") // 0
Number(" ") // 0
Number(true) // 1
Number(false) // 0
Number(null) // 0
Number(undefined) // NaN
parseInt("12") // 12
parseFloat("12.1") // 12.1
如果该字符串不是一个有效的数字,转换的结果会是 NaN
。例如:
js
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN,转换失败
number 类型转换规则:
值 | 变成…… |
---|---|
undefined | NaN |
null | 0 |
true 和 false | 1 和 0 |
string | 去掉首尾空白字符(空格、换行符 \n、制表符 \t 等)后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN。 |
例子:
js
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN(从字符串“读取”数字,读到 "z" 时出现错误)
alert( Number(true) ); // 1
alert( Number(false) ); // 0
请注意 null
和 undefined
在这有点不同:null
变成数字 0
,undefined
变成 NaN
。
布尔型转换
布尔型转换它发生在逻辑运算中,但是也可以通过调用 Boolean(value)
显式地进行转换。
转换规则如下:
- 直观上为 “空” 的值(如
0
、空字符串、null
、undefined
和NaN
)将变为false
。 - 其他值变成
true
。
js
console.log(Boolean(0)); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN)); // false
请注意:包含 0 的字符串 "0" 是 true
一些编程语言(比如 PHP)视 "0" 为 false。但在 JavaScript 中,非空的字符串总是 true。
js
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // 空格,也是 true(任何非空字符串都是 true)