了解 JavaScript 類型轉換的基礎知識

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

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

以及對象類型:

(還有 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() 全局函數來實現這一點,這是一種類似於構造函數的方法。我們可以將字符串傳遞給它,JavaScript 將找出如何將其轉換為數字:

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

在轉換為數字之前,字符串會被修剪:

Number(" 1 ") //1

傳遞空字符串的預設值為 0:

Number("") //0

如果字符串包含無效字符,將生成 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