JavaScript中的類型轉換
如何在JavaScript中從一個類型轉換為另一個類型
即使JavaScript是一個弱類型的語言,你可能需要將一個值從一個類型轉換為另一個類型。
在JavaScript中,我們有以下的原始類型:
Number
String
Boolean
Symbol
以及物件類型:
Object
(還有null
和undefined
,但不需要將它們轉換)
例如,你可能想要將以下類型進行轉換:
- 從數字轉換為字符串
- 從字符串轉換為數字
- 從字符串轉換為布爾值
- 從布爾值轉換為字符串
…等等。
以下是你可以使用的技巧將一種類型轉換為另一種類型。我將介紹最常見的情況。
將值轉換為字符串
通常將任何值轉換為字符串通常只需要調用該值的toString()
方法,JavaScript將創建一個與該類型對應的字符串值。或者你可以將任何值傳遞給全局函數String()
。
從數字轉換為字符串
使用全局函數String()
或者數字類型的toString()
方法:
1 | String(10) //"10" |
從布爾值轉換為字符串
使用全局函數String()
或者布爾值類型的toString()
方法:
1 | String(true) //"true" |
從日期轉換為字符串
使用全局函數String()
或者日期類型的toString()
方法:
1 | String(new Date('2019-01-22')) |
字符串的特殊情況
1 | String(null) //"null" |
將值轉換為數字
從字符串轉換為數字
我們可以使用Number()
全局函數來完成這個操作,這個函數可以將字符串轉換為數字:
1 | Number("1") //1 |
在轉換為數字之前,JavaScript會去除字符串中的空格:
1 | Number(" 1 ") //1 |
如果傳入的是空字符串,則默認為0:
1 | Number("") //0 |
對於含有小數位的數字,可以使用小數點:
1 | Number("12.2") |
如果字符串包含無效字符,則會生成NaN
。
這是將字符串轉換為數字的基礎知識,我在JavaScript中將字符串轉換為數字的詳細介紹中提供了更多細節。還有其他方法可以從字符串生成數字,包括parseInt()
、parseFloat()
、Math.floor()
和一元+
運算符。
從布爾值轉換為數字
和字符串一樣,將布爾值傳遞給Number()
函數將返回0或1:
1 | Number(true) //1 |
從日期轉換為數字
如果將日期對象傳遞給Number()
,它將返回日期的時間戳,這是你能得到的最好的日期到數字的轉換。
數字的特殊情況
1 | Number(null) //0 |
將值轉換為布爾值
通過將值傳遞給Boolean()
,任何值都可以轉換為布爾值。
除了以下值之外,所有的值都將解析為true
:
Boolean(false) //false
Boolean(0) //false
Boolean(NaN) //false
Boolean("") //false
Boolean(null) //false
Boolean(undefined) //false