大部分時候,運算子與函式會自動將給定的值轉換成正確的類型。
例如,alert
會自動將任何值轉換成字串以顯示。數學運算會將值轉換成數字。
有些情況下,我們需要明確地將值轉換成預期的類型。
在本章中,我們不會介紹物件。目前,我們只會討論基本型別。
稍後,在我們學習物件之後,在章節 物件轉換為原始型別 中,我們將會看到物件如何運作。
字串轉換
當我們需要某個值的字串形式時,就會發生字串轉換。
例如,alert(value)
會執行此動作以顯示值。
我們也可以呼叫 String(value)
函式,將值轉換為字串
let value = true;
alert(typeof value); // boolean
value = String(value); // now value is a string "true"
alert(typeof value); // string
字串轉換大多很明顯。false
會變成 "false"
,null
會變成 "null"
,等等。
數字轉換
在數學函式和表達式中,數字轉換會自動發生。
例如,當除法 /
套用於非數字時
alert( "6" / "2" ); // 3, strings are converted to numbers
我們可以使用 Number(value)
函式,明確地將 value
轉換為數字
let str = "123";
alert(typeof str); // string
let num = Number(str); // becomes a number 123
alert(typeof num); // number
當我們從基於字串的來源(例如文字表單)讀取值,但預期輸入數字時,通常需要明確轉換。
如果字串不是有效的數字,則此類轉換的結果為 NaN
。例如
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN, conversion failed
數字轉換規則
值 | 變成... |
---|---|
undefined |
NaN |
null |
0 |
true 和 false |
1 和 0 |
字串 |
移除開頭和結尾的空白(包括空格、跳格 \t 、換行 \n 等)。如果剩下的字串為空,則結果為 0 。否則,會從字串中「讀取」數字。錯誤會產生 NaN 。 |
範例
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (error reading a number at "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
請注意,null
和 undefined
在這裡的行為不同:null
變成 0,而 undefined
變成 NaN
。
大多數數學運算子也會執行此類轉換,我們將在下一章中看到。
布林轉換
布林轉換是最簡單的。
它發生在邏輯運算中(稍後我們會遇到條件測試和其他類似的事物),但也可以透過呼叫 Boolean(value)
明確執行。
轉換規則
- 直覺上「為空」的值,例如
0
、空字串、null
、undefined
和NaN
,會變成false
。 - 其他值會變成
true
。
例如
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
"0"
為 true
某些語言(例如 PHP)將 "0"
視為 false
。但在 JavaScript 中,非空字串永遠為 true
。
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)
摘要
最廣泛使用的三種型別轉換為字串、數字和布林值。
字串轉換
– 發生在我們輸出某個內容時。可以使用 String(value)
執行。對於基本值,轉換為字串通常很明顯。
數字轉換
– 發生在數學運算中。可以使用 Number(value)
執行。
轉換遵循以下規則
值 | 變成... |
---|---|
undefined |
NaN |
null |
0 |
true / false |
1 / 0 |
字串 |
字串以「原樣」讀取,兩側的空白(包括空格、製表符 \t 、換行符 \n 等)都會被忽略。空字串會變成 0 。錯誤會產生 NaN 。 |
布林值轉換
– 發生在邏輯運算中。可以使用 Boolean(value)
執行。
遵循以下規則
值 | 變成... |
---|---|
0 、null 、undefined 、NaN 、"" |
false |
任何其他值 | true |
這些規則大多容易理解和記憶。人們通常會犯錯的顯著例外情況有
undefined
作為數字時為NaN
,而不是0
。"0"
和僅包含空格的字串(如" "
)作為布林值時為 true。
物件在此未涵蓋。我們會在章節 物件轉換為基本型別 中稍後再回顧物件,在我們瞭解更多有關 JavaScript 的基本事項後,該章節專門探討物件。
留言
<code>
標籤,若要插入多行,請將其包覆在<pre>
標籤中,若要插入超過 10 行,請使用沙盒(plnkr、jsbin、codepen…)