KDOC 626: WeakMap のキーは参照で照合する
この文書のステータス
- 作成
- 2026-09-18 貴島
- レビュー
- 2026-09-18 貴島
概要
WeakMap のキーは参照で照合するので、値が同じであっても区別される。
const wm = new WeakMap();
const keyObject1 = {"this is": "key object"};
const keyObject2 = {"this is": "key object"};
wm.set(keyObject1, "save1");
wm.set(keyObject2, "save2");
console.log(wm.get(keyObject1));
console.log(wm.get(keyObject2));
save1
save2
キーの等価性 通常の Map と同様に、値の等価性は SameValueZero アルゴリズムに基づきます。これは
=演算子と同じです。WeakMap がオブジェクトとシンボルのキーしか保持できないためです。つまり、オブジェクトキーの場合、等価性はオブジェクトが同一のものであるかに基づきます。これらは値ではなく参照によって比較されます。
関連
抽象。
- 中身が同じでも、同一のものでなければ別物として扱われる
関連。
- 類似: KDOC 625: WeakMapはGCを妨げない
- 追加調査: 参照等価と値等価の例を調べる
- 類似: KDOC 519: Goのmapではキーの値が同じでも型情報が違えば別のものとして扱われる。見た目が同じキーでもmapで別物として扱われる例
- 類似: KDOC 86: errors.Is()は==で比べ、errors.Newのエラーはアドレスで一致する。同じかどうかを、中身の値で比べるか指し示す先で比べるかの違い