目录

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")
亲自试一试 »

数字方法

在章节中数字方法,您会发现更多可用于将字符串转换为数字的方法:

Method Description
Number() Returns a number, converted from its argument
parseFloat() Parses a string and returns a floating point number
parseInt() Parses a string and returns an integer

一元 + 运算符

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

示例

let y = "5";      // y is a string
let x = + y;      // x is a number
亲自试一试 »

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

示例

let y = "John";   // y is a string
let x = + y;      // x is a number (NaN)
亲自试一试 »


将数字转换为字符串

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

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

示例

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
亲自试一试 »

数字法toString()做同样的事情。

示例

x.toString()
(123).toString()
(100 + 23).toString()
亲自试一试 »

更多方法

在章节中数字方法,您会发现更多可用于将数字转换为字符串的方法:

Method Description
toExponential() Returns a string, with a number rounded and written using exponential notation.
toFixed() Returns a string, with a number rounded and written with a specified number of decimals.
toPrecision() Returns a string, with a number written with a specified length

将日期转换为数字

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

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

日期法getTime()做同样的事情。

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

将日期转换为字符串

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

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

日期方法toString()做同样的事情。

示例

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

在章节中日期方法,您会发现更多可用于将日期转换为字符串的方法:

Method Description
getDate() Get the day as a number (1-31)
getDay() Get the weekday a number (0-6)
getFullYear() Get the four digit year (yyyy)
getHours() Get the hour (0-23)
getMilliseconds() Get the milliseconds (0-999)
getMinutes() Get the minutes (0-59)
getMonth() Get the month (0-11)
getSeconds() Get the seconds (0-59)
getTime() Get the time (milliseconds since January 1, 1970)

将布尔值转换为数字

全局方法Number()还可以将布尔值转换为数字。

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

将布尔值转换为字符串

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

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

布尔方法toString()做同样的事情。

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

自动类型转换

当 JavaScript 尝试操作 "wrong" 数据类型时,它会尝试将值转换为 "right" 类型。

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

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()当您尝试"output"一个对象或变量时函数:

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"

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

// if myVar = 123             // toString converts to "123"
// if myVar = true            // toString converts to "true"
// if myVar = false           // toString converts to "false"

JavaScript 类型转换表

下表显示了将不同 JavaScript 值转换为数字、字符串和布尔值的结果:

Original
Value
Converted
to Number
Converted
to String
Converted
to 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 尝试一下 »

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

红色值指示(某些)程序员可能不期望的值。