如何在JavaScript中從一個類型轉換為另一個類型

即使JavaScript是一個弱類型的語言,你可能需要將一個值從一個類型轉換為另一個類型。

在JavaScript中,我們有以下的原始類型:

  • Number
  • String
  • Boolean
  • Symbol

以及物件類型:

  • Object

(還有nullundefined,但不需要將它們轉換)

例如,你可能想要將以下類型進行轉換:

  • 從數字轉換為字符串
  • 從字符串轉換為數字
  • 從字符串轉換為布爾值
  • 從布爾值轉換為字符串

…等等。

以下是你可以使用的技巧將一種類型轉換為另一種類型。我將介紹最常見的情況。

將值轉換為字符串

通常將任何值轉換為字符串通常只需要調用該值的toString()方法,JavaScript將創建一個與該類型對應的字符串值。或者你可以將任何值傳遞給全局函數String()

從數字轉換為字符串

使用全局函數String()或者數字類型的toString()方法:

String(10) //"10"
(10).toString() //"10"

從布爾值轉換為字符串

使用全局函數String()或者布爾值類型的toString()方法:

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

從日期轉換為字符串

使用全局函數String()或者日期類型的toString()方法:

String(new Date('2019-01-22'))
//"Tue Jan 22 2019 01:00:00 GMT+0100 (Central European Standard Time)"

(new Date('2019-01-22')).toString()
//"Tue Jan 22 2019 01:00:00 GMT+0100 (Central European Standard Time)"

字符串的特殊情況

String(null) //"null"
String(undefined) //"undefined"
String(NaN) //"NaN"

將值轉換為數字

從字符串轉換為數字

我們可以使用Number()全局函數來完成這個操作,這個函數可以將字符串轉換為數字:

Number("1") //1
Number("0") //0

在轉換為數字之前,JavaScript會去除字符串中的空格:

Number(" 1 ") //1

如果傳入的是空字符串,則默認為0:

Number("") //0

對於含有小數位的數字,可以使用小數點:

Number("12.2")

如果字符串包含無效字符,則會生成NaN

這是將字符串轉換為數字的基礎知識,我在JavaScript中將字符串轉換為數字的詳細介紹中提供了更多細節。還有其他方法可以從字符串生成數字,包括parseInt()parseFloat()Math.floor()和一元+運算符。

從布爾值轉換為數字

和字符串一樣,將布爾值傳遞給Number()函數將返回0或1:

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

從日期轉換為數字

如果將日期對象傳遞給Number(),它將返回日期的時間戳,這是你能得到的最好的日期到數字的轉換。

數字的特殊情況

Number(null) //0
Number(undefined) //NaN
Number(NaN) //NaN

將值轉換為布爾值

通過將值傳遞給Boolean(),任何值都可以轉換為布爾值。

除了以下值之外,所有的值都將解析為true

Boolean(false) //false
Boolean(0) //false
Boolean(NaN) //false
Boolean("") //false
Boolean(null) //false
Boolean(undefined) //false