強制型別轉換
JavaScript 支援使用以下函數進行強制型別轉換。
-
Boolean(value):把引數值轉換為布林型值。
-
Number(value):把引數值轉換為數位。
-
String(value):把引數值轉換為字串。
在下面程式碼中,分別呼叫上述 3 個函數,把引數值強制轉換為新的型別值。
console.log(String(true)); //返回字串"true"
console.log(String(0)); //返回字串"0"
console.log(Number("1")); //返回數值1
console.log(Number(true)); //返回數值1
console.log(Number("a")); //返回NaN
console.log(Boolean(1)); //返回true
console.log(Boolean("")); //返回false
注意:
-
true 被強制轉換為數值 1,false 被強制轉換為數值 0,而使用 parseInt() 方法轉換時,都返回 NaN。
console.log(Number(true)); //返回1
console.log(Number(false)); //返回0
console.log(parseInt(true)); //返回NaN
console.log(parseInt(false)); //返回NaN
-
當值包括至少一個字元的字串、非 0 數位或物件時,Boolean() 強制轉換後都會返回 true。
-
如果值是空字串、數位 0、undefined 或 null,Boolean() 強制轉換後都會返回true。
-
Number() 強制轉換與 parseInt() 和 parseFloat() 方法的處理方式不同,Number() 轉換的是整體,而不是區域性值。
console.log(Number("123abc")); //返回NaN
console.log(Number("123abc")); //返回數值123
-
String() 能夠把 null 和 undefined 強制轉換為對應字串,而呼叫 toString() 方法將引發錯誤。
console.log(String(null));
console.log(String(undefined));
console.log(null.toString());
console.log(undefined.toString());
在 JavaScript 中,使用強制型別轉換非常有用,但是應該根據具體應用場景使用,以確保正確轉換值。
自動型別轉換
JavaScript 能夠根據具體運算環境自動轉換參與運算的值得型別。下面簡單介紹常用值在不同運算環境中被自動轉換的值列表。
資料型別自動轉換列表
值(value) |
字串操作環境 |
數位運算環境 |
邏輯運算環境 |
物件操作環境 |
undefined |
"undefined" |
NaN |
false |
Error |
null |
"null" |
0 |
false |
Error |
非空字串 |
不轉換 |
字串對應的數位值NaN |
true |
String |
空字串 |
不轉換 |
0 |
false |
String |
0 |
"0" |
不轉換 |
false |
Number |
NaN |
"NaN" |
不轉換 |
false |
Number |
Infinity |
"Infinity" |
不轉換 |
true |
Number |
Number.POSITIVE_INFINITY |
"Infinity" |
不轉換 |
true |
Number |
Number.NEGATIVE_INFINITY |
"-Infinity" |
不轉換 |
true |
Number |
-Infinity |
"-Infinity" |
不轉換 |
true |
Number |
Number.MAX_VALUE |
"1.7976931348623157e+308" |
不轉換 |
true |
Number |
Number.MIN_VALUE |
"5e-324" |
不轉換 |
true |
Number |
其他所有數位 |
"數位的字串值" |
不轉換 |
true |
Number |
true |
"true" |
1 |
不轉換 |
Boolean |
false |
"false" |
0 |
不轉換 |
Boolean |
物件 |
toString() |
valueOf() 或 toString() 或 NaN |
true |
不轉換 |