在 JavaScript 中,資料型別(Data Types) 可以分為兩大類:
✅ 1. 值型別(Primitive Types)
- 也稱「原始型別」,儲存的是值本身
- 資料在記憶體中直接存儲值
- 複製時是複製值(值拷貝)
型別 | 範例 |
---|---|
string |
'hello' |
number |
42 |
boolean |
true / false |
undefined |
undefined |
null |
null |
symbol |
Symbol() |
bigint |
10n |
✅ 2. 參考型別(Reference Types)
- 儲存的是資料的「記憶體位址(reference)」
- 資料實體存在記憶體堆(heap)中
- 複製的是記憶體位址(引用拷貝)
- 多個變數可指向同一份資料,修改一處其他處也會變
📦 常見的參考型別:
型別 | 範例 |
---|---|
Object |
{ name: 'Tom' } |
Array |
[1, 2, 3] |
Function |
function() {} |
Date |
new Date() |
RegExp |
/abc/ |
Map |
new Map() |
Set |
new Set() |
其他物件型別 | WeakMap 、WeakSet 等 |
🔍 差異範例說明
✳️ 值型別是「值拷貝」
1 | let a = 10; |
✳️ 參考型別是「位址拷貝」
1 | let obj1 = { name: 'Alice' }; |
❗為什麼這很重要?
因為它會影響你:
- 物件/陣列是否共享資料
- 如何寫拷貝(深拷貝 vs 淺拷貝)
- 函式參數是否會改變外部資料(因為是傳參考)
✅ 判斷資料型別方法
1. typeof
1 | typeof 123 // 'number' |
2. Array.isArray()
1 | Array.isArray([]); // true |
3. instanceof
1 | [] instanceof Array // true |
🧠 小結:你該記住的是…
類型 | 是否為參考型別 | 複製的是什麼? | 修改後是否影響原資料 |
---|---|---|---|
number |
❌ 否 | 值(Value) | 否 |
string |
❌ 否 | 值(Value) | 否 |
object |
✅ 是 | 記憶體位置(Reference) | ✅ 會影響原資料 |
array |
✅ 是 | 記憶體位置 | ✅ 會影響原資料 |