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