JavaScript 中階
請解釋 Set、Map、WeakSet 和 WeakMap 的區別?
Set、Map、WeakSet、WeakMap 的區別
Set
儲存唯一值的集合,自動去重:
const set = new Set([1, 2, 2, 3]);
set.size; // 3
set.has(2); // true
const unique = [...new Set([1, 2, 2, 3])]; // [1, 2, 3]
Map
儲存 key-value 對,key 可為任意型別:
const map = new Map();
map.set('a', 1);
map.get('a'); // 1
map.size; // 1
WeakSet
- 只能存放物件
- 對物件是弱引用,不阻止垃圾回收
- 不可遍歷,沒有
size屬性
const ws = new WeakSet();
const obj = {};
ws.add(obj); ws.has(obj); // true
WeakMap
- Key 只能是物件
- 對 key 是弱引用,適合存私有資料
const wm = new WeakMap();
const key = {};
wm.set(key, 'private');
wm.get(key); // 'private'
比較表
| 特性 | Set | Map | WeakSet | WeakMap |
|---|---|---|---|---|
| 弱引用 | ❌ | ❌ | ✅ | ✅ |
| 可遍歷 | ✅ | ✅ | ❌ | ❌ |
| size 屬性 | ✅ | ✅ | ❌ | ❌ |
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
