二维码

JavaScript 类型转换

JavaScript 类型转换

  • 将字符串转换为数字
  • 将数字转换为字符串
  • 将日期转换为数字
  • 将数字转换为日期
  • 将布尔值转换为数字
  • 将数字转换为布尔值

JavaScript 类型转换

JavaScript 变量可以转换为新变量和另一种数据类型:

  • 通过使用 JavaScript 函数
  • 由 JavaScript 本身自动执行

将字符串转换为数字

全局方法Number()将变量(或值)转换为数字。

数字字符串(如“3.14”)转换为数字(如 3.14)。

空字符串(如 “”)转换为 0。

非数字字符串(如“John”)转换为 NaN(Not a Number)。

:这些将转换
1
2
3
4
Number("3.14")  
Number(Math.PI)
Number(" ")
Number("")
:这些不会转换
1
2
Number("99 88")  
Number("John")


Number 方法

在[“数法”]一章中,你 将找到更多可用于将字符串转换为数字:

方法 描述
Number() 返回一个从其参数转换而来的数字
parseFloat() 解析字符串并返回浮点数
parseInt() 解析一个字符串并返回一个整数

一元 + 运算符

一元 + 运算符可用于 将变量转换为数字:

1
2
let y = "5";      // y is a string  
let x = + y;      // x is a number

如果变量无法转换,它仍然会变成数字,但值为 NaN(不是数字):

1
2
let y = "John";   // y is a string  
let x = + y;      // x is a number (NaN)


将数字转换为字符串

全局方法String()可以将数字转换为字符串。

它可以用于任何类型的数字、文字、变量或表达式:

1
2
3
String(x)         // returns a string from a number variable x  
String(123)       // returns a string from a number literal 123
String(100 + 23)  // returns a string from a number from an expression

Number方法 toString() 执行相同的操作。

1
2
3
x.toString()  
(123).toString()
(100 + 23).toString()


更多方法

在“数字方法”一章中,您将找到更多可用于将数字转换为字符串的方法:

方法 概述
toExponential() 返回一个字符串,其中数字四舍五入并使用指数表示法书写。
toFixed() 返回一个字符串,其中数字四舍五入并以指定的小数位数书写。
toPrecision() 返回一个字符串,其中包含指定长度的数字

将日期转换为数字

全局方法Number()可用于将日期转换为数字。

1
2
d = new Date();  
Number(d)          // returns 1404568027739

日期方法getTime()的作用相同。

1
2
d = new Date();  
d.getTime()        // returns 1404568027739

将日期转换为字符串

全局方法String()可以将日期转换为字符串。

1
2
3
Strin<!-- <div class="codeframe"> -->

```mdg(Date())  // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

Date 方法toString()的作用相同。

1
Date().toString()  // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

在“日期方法”一章中,您将找到更多可用于将日期转换为字符串的方法:

方法 概述
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() 还可以将布尔值转换为数字。

1
2
Number(false)     // returns 0  
Number(true)      // returns 1

将布尔值转换为字符串

全局方法 String() 可以将布尔值转换为字符串。

1
2
String(false)      // returns "false"  
String(true)       // returns "true"

布尔方法toString()执行相同的操作。

1
2
false.toString()   // returns "false"  
true.toString()    // returns "true"

自动类型转换

当 JavaScript 尝试对“错误”的数据类型进行操作时,它会尝试 将值转换为“right”类型。

结果并不总是你所期望的:

1
2
3
4
5
5 + null    // returns 5         because null is converted to 0  
"5" + null  // returns "5null"   because null is converted to "null"
"5" + 2     // returns "52"      because 2 is converted to "2"
"5" - 2     // returns 3         because "5" is converted to 5
"5" * "2"   // returns 10        because "5" and "2" are converted to 5 and 2


自动字符串转换

当您尝试“输出”对象或变量时,JavaScript 会自动调用变量的toString()函数:

1
2
3
4
5
document.getElementById("demo").innerHTML = myVar;  

// if myVar = {name:"Fjohn"}  // toString converts to "[object Object]"
// if myVar = [1,2,3,4]       // toString converts to "1,2,3,4"
// if myVar = new Date()      // toString converts to "Fri Jul 18 2014 09:08:55 GMT+0200"

数字和布尔值也被转换,但这不是很明显:

1
2
3
// if myVar = 123             // toString converts to "123"  
// if myVar = true            // toString converts to "true"
// if myVar = false           // toString converts to "false"

JavaScript 类型转换表

下表显示了将不同 JavaScript 值转换为 Number、String 和 Boolean 的结果:

原值 转换为数字 转换为字符串 转换为布尔值 尝试一下

| 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 | |

引号中的值表示字符串值。

红色值表示(某些)程序员可能意想不到的值。