JavaScript 類型轉換機制
JavaScript 的類型轉換是其核心特性之一,理解它對于編寫健壯的代碼至關重要。以下是 JavaScript 類型轉換的主要知識點:
1. 隱式類型轉換 (強制類型轉換)
當操作符作用于不匹配的類型時,JavaScript 會自動進行隱式轉換。
常見場景:
- 使用
+
運算符時(可能轉換為字符串) - 使用
==
比較時 - 在需要布爾值的上下文中使用非布爾值(如
if
語句)
"3" + 2;
"3" - 2;
true + 1;
null + "";
2. 顯式類型轉換
開發者可以主動進行類型轉換:
轉換為數字:
Number("123");
parseInt("123px");
parseFloat("12.34");
+"123";
轉換為字符串:
String(123);
(123).toString();
123 + "";
轉換為布爾值:
Boolean(1);
!!"hello";
3. 特殊值的轉換規則
值 | 轉換為數字 | 轉換為字符串 | 轉換為布爾值 |
---|
undefined | NaN | "undefined" | false |
null | 0 | "null" | false |
true | 1 | "true" | true |
false | 0 | "false" | false |
"" (空字符串) | 0 | "" | false |
"123" | 123 | "123" | true |
"abc" | NaN | "abc" | true |
[] | 0 | "" | true |
[123] | 123 | "123" | true |
{} | NaN | "[object Object]" | true |
4. ==
和 ===
的區別
==
(寬松相等):會進行類型轉換===
(嚴格相等):不進行類型轉換,類型不同直接返回 false
"123" == 123;
"123" === 123;
null == undefined;
null === undefined;
5. 對象到原始值的轉換
當對象參與運算時,會嘗試調用以下方法:
- 優先調用
valueOf()
方法(返回原始值) - 如果沒有原始值,則調用
toString()
方法 - 對于 Date 對象,優先調用
toString()
let obj = {
valueOf() { return 123; },
toString() { return "obj"; }
};
obj + 1;
String(obj);
6. 最佳實踐
- 盡量使用
===
而不是 ==
- 顯式轉換優于隱式轉換
- 注意
parseInt
的第二個參數(基數)以避免意外結果 - 對于復雜對象,自定義
valueOf
和 toString
方法可以控制轉換行為
理解 JavaScript 的類型轉換機制可以幫助你避免許多常見的陷阱,寫出更可靠的代碼。
?轉自https://juejin.cn/post/7533264585140633635
該文章在 2025/8/7 17:31:54 編輯過