大多數情況下,運算符和函數會自動將賦予它們的值轉換爲正確的類型。
比如,alert 會自動將任何值都轉換爲字符串以進行顯示。算術運算符會將值轉換爲數字。
在某些情況下,我們需要將值顯式地轉換爲我們期望的類型。
對象還未納入討論中
在本章中,我們不會討論 object 類型。目前,我們將只學習原始類型。
之後,在我們學習完 object 類型後,我們會在 對象 —— 原始值轉換 壹章中學習對象 — 原始值轉換。
當我們需要壹個字符串形式的值時,就會進行字符串轉換。
比如,alert(value) 將 value 轉換爲字符串類型,然後顯示這個值。
我們也可以顯式地調用 String(value) 來將 value 轉換爲字符串類型:
let value = true; alert(typeof value); // boolean value = String(value); // 現在,值是壹個字符串形式的 "true" alert(typeof value); // string
字符串轉換最明顯。false 變成 "false",null 變成 "null" 等。
在算術函數和表達式中,會自動進行 number 類型轉換。
比如,當把除法 / 用于非 number 類型:
alert( "6" / "2" ); // 3, string 類型的值被自動轉換成 number 類型後進行計算
我們也可以使用 Number(value) 顯式地將這個 value 轉換爲 number 類型。
let str = "123"; alert(typeof str); // string let num = Number(str); // 變成 number 類型 123 alert(typeof num); // number
當我們從 string 類型源(如文本表單)中讀取壹個值,但期望輸入壹個數字時,通常需要進行顯式轉換。
如果該字符串不是壹個有效的數字,轉換的結果會是 NaN。例如:
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN,轉換失敗number 類型轉換規則:
| 值 | 變成…… |
|---|---|
undefined | NaN |
null | 0 |
true 和 false | 1 and 0 |
string | 去掉首尾空白字符(空格、換行符 n、制表符 t 等)後的純數字字符串中含有的數字。如果剩余字符串爲空,則轉換結果爲 0。否則,將會從剩余字符串中“讀取”數字。當類型轉換出現 error 時返回 NaN。 |
例子:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN(從字符串“讀取”數字,讀到 "z" 時出現錯誤)
alert( Number(true) ); // 1
alert( Number(false) ); // 0請注意 null 和 undefined 在這有點不同:null 變成數字 0,undefined 變成 NaN。
大多數數學運算符都執行這種轉換,我們將在下壹節中進行介紹。
布爾(boolean)類型轉換是最簡單的壹個。
它發生在邏輯運算中(稍後我們將進行條件判斷和其他類似的東西),但是也可以通過調用 Boolean(value) 顯式地進行轉換。
轉換規則如下:
直觀上爲“空”的值(如 0、空字符串、null、undefined 和 NaN)將變爲 false。
其他值變成 true。
比如:
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false請注意:包含 0 的字符串 "0" 是 true
壹些編程語言(比如 PHP)視 "0" 爲 false。但在 JavaScript 中,非空的字符串總是 true。
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // 空格,也是 true(任何非空字符串都是 true)有三種常用的類型轉換:轉換爲 string 類型、轉換爲 number 類型和轉換爲 boolean 類型。
字符串轉換 —— 轉換發生在輸出內容的時候,也可以通過 String(value) 進行顯式轉換。原始類型值的 string 類型轉換通常是很明顯的。
數字型轉換 —— 轉換發生在進行算術操作時,也可以通過 Number(value) 進行顯式轉換。
數字型轉換遵循以下規則:
| 值 | 變成…… |
|---|---|
undefined | NaN |
null | 0 |
true / false | 1 / 0 |
string | “按原樣讀取”字符串,兩端的空白字符(空格、換行符 n、制表符 t 等)會被忽略。空字符串變成 0。轉換出錯則輸出 NaN。 |
布爾型轉換 —— 轉換發生在進行邏輯操作時,也可以通過 Boolean(value) 進行顯式轉換。
布爾型轉換遵循以下規則:
| 值 | 變成…… |
|---|---|
0, null, undefined, NaN, "" | false |
| 其他值 | true |
上述的大多數規則都容易理解和記憶。人們通常會犯錯誤的值得注意的例子有以下幾個:
對 undefined 進行數字型轉換時,輸出結果爲 NaN,而非 0。
對 "0" 和只有空格的字符串(比如:" ")進行布爾型轉換時,輸出結果爲 true。
我們在本小節沒有講 object 類型的轉換。在我們學習完更多關于 JavaScript 的基礎知識後,我們會在專門介紹 object 的章節 對象 —— 原始值轉換 中詳細講解 object 類型轉換。