JavaScript 类型转换
- 将字符串转换为数字
- 将数字转换为字符串
- 将日期转换为数字
- 将数字转换为日期
- 将布尔值转换为数字
- 将数字转换为布尔值
JavaScript 类型转换
JavaScript 变量可以转换为新变量和另一种数据类型
- 通过使用 JavaScript 函数
- 由 JavaScript 本身**自动**转换
将字符串转换为数字
全局方法 Number() 将变量(或值)转换为数字。
数字字符串(如“3.14”)转换为数字(如 3.14)。
空字符串(如“"”)转换为 0。
非数字字符串(如“John”)转换为 NaN(非数字)。
示例
这些将转换:
Number("3.14")
Number(Math.PI)
Number(" ")
Number("")
这些将不转换:
Number("99 88")
Number("John")
自己动手试一试 »
Number 方法
在 Number 方法 一章中,您将找到更多可用于将字符串转换为数字的方法。
| 方法 | 描述 |
|---|---|
| Number() | 返回从其参数转换而来的数字 |
| parseFloat() | 解析字符串并返回浮点数 |
| parseInt() | 解析字符串并返回整数 |
一元 + 运算符
一元 **+ 运算符**可用于将变量转换为数字
如果变量无法转换,它仍将成为一个数字,但值为 NaN(非数字)
将数字转换为字符串
全局方法 String() 可以将数字转换为字符串。
它可用于任何类型的数字、字面量、变量或表达式
示例
String(x) // 从数字变量 x 返回一个字符串
String(123) // 从数字字面量 123 返回一个字符串
String(100 + 23) // 从表达式的数字返回一个字符串
自己动手试一试 »
Number 方法 toString() 也执行相同的操作。
更多方法
在 Number 方法 一章中,您将找到更多可用于将数字转换为字符串的方法。
| 方法 | 描述 |
|---|---|
| toExponential() | 返回一个字符串,其中数字经过四舍五入并使用指数表示法书写。 |
| toFixed() | 返回一个字符串,其中数字经过四舍五入并使用指定的小数位数书写。 |
| toPrecision() | 返回一个字符串,其中数字以指定的长度书写 |
将日期转换为数字
全局方法 Number() 可用于将日期转换为数字。
d = new Date();
Number(d) // 返回 1404568027739
日期方法 getTime() 也执行相同的操作。
d = new Date();
d.getTime() // 返回 1404568027739
将日期转换为字符串
全局方法 String() 可以将日期转换为字符串。
String(Date()) // 返回 "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"
日期方法 toString() 也执行相同的操作。
示例
Date().toString() // 返回 "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"
在 Date 方法 一章中,您将找到更多可用于将日期转换为字符串的方法。
| 方法 | 描述 |
|---|---|
| getDate() | 将日期作为数字获取 (1-31) |
| getDay() | 将星期几作为数字获取 (0-6) |
| getFullYear() | 获取四位数字的年份 (yyyy) |
| getHours() | 获取小时数 (0-23) |
| getMilliseconds() | 获取毫秒数 (0-999) |
| getMinutes() | 获取分钟数 (0-59) |
| getMonth() | 获取月份数 (0-11) |
| getSeconds() | 获取秒数 (0-59) |
| getTime() | 获取时间(自 1970 年 1 月 1 日以来的毫秒数) |
将布尔值转换为数字
全局方法 Number() 也可以将布尔值转换为数字。
Number(false) // 返回 0
Number(true) // 返回 1
将布尔值转换为字符串
全局方法 String() 可以将布尔值转换为字符串。
String(false) // 返回 "false"
String(true) // 返回 "true"
Boolean 方法 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 和 2
自己动手试一试 »
自动字符串转换
当您尝试“输出”对象或变量时,JavaScript 会自动调用变量的 toString() 函数
document.getElementById("demo").innerHTML = myVar;
// 如果 myVar = {name:"Fjohn"} // toString 转换为 "[object Object]"
// 如果 myVar = [1,2,3,4] // toString 转换为 "1,2,3,4"
// 如果 myVar = new Date() // toString 转换为 "Fri Jul 18 2014 09:08:55 GMT+0200"
数字和布尔值也会被转换,但这并不明显
// 如果 myVar = 123 // toString 转换为 "123"
// 如果 myVar = true // toString 转换为 "true"
// 如果 myVar = false // toString 转换为 "false"
JavaScript 类型转换表
此表显示了将不同的 JavaScript 值转换为数字、字符串和布尔值的结果
| 原始值 值 |
转换后 转换为数字 |
转换后 转换为字符串 |
转换后 转换为布尔值 |
试一试 |
|---|---|---|---|---|
| false | 0 | “false” | false | 试一试 » |
| true | 1 | "true" | true | 试一试 » |
| 0 | 0 | "0" | false | 试一试 » |
| 1 | 1 | "1" | true | 试一试 » |
| "0" | 0 | "0" | true | 试一试 » |
| "000" | 0 | "000" | true | 试一试 » |
| "1" | 1 | "1" | true | 试一试 » |
| NaN | NaN | "NaN" | false | 试一试 » |
| Infinity | Infinity | "Infinity" | true | 试一试 » |
| -Infinity | -Infinity | "-Infinity" | true | 试一试 » |
| "" | 0 | "" | false | 试一试 » |
| "20" | 20 | "20" | true | 试一试 » |
| "twenty" | NaN | "twenty" | true | 试一试 » |
| [ ] | 0 | "" | true | 试一试 » |
| [20] | 20 | "20" | true | 试一试 » |
| [10,20] | NaN | "10,20" | true | 试一试 » |
| ["twenty"] | NaN | "twenty" | true | 试一试 » |
| ["ten","twenty"] | NaN | "ten,twenty" | true | 试一试 » |
| function(){} | NaN | "function(){}" | true | 试一试 » |
| { } | NaN | "[object Object]" | true | 试一试 » |
| null | 0 | "null" | false | 试一试 » |
| undefined | NaN | "undefined" | false | 试一试 » |
引号中的值表示字符串值。
红色值表示(一些)程序员可能不会期望的值。