JavaScript 中階

請解釋 Set、Map、WeakSet 和 WeakMap 的區別?

AI 練習作答

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 評分