Start · Sprachen · JavaScript · Referenz · Map.prototype.clear()

Map.prototype.clear()

Methode

Entfernt alle Schlüssel-Wert-Paare aus einer <code>Map</code>. Danach ist <code>size</code> gleich <code>0</code>.

seit JavaScript ES2015 Kategorie: method-property

Signatur

Map.prototype.clear()

Beschreibung

Die Methode clear() leert eine Map-Instanz komplett: Alle Einträge werden entfernt, und size ist danach 0. Das Map-Objekt selbst bleibt erhalten. Jeder Code, der eine Referenz darauf hält, sieht sofort die leere Map.

Nützlich ist das vor allem bei Caches, Registries oder Zustandsspeichern, die man zurücksetzen möchte, ohne alle Stellen anzupassen, die die Map verwenden. Eine neue Zuweisung wie map = new Map() ändert dagegen nur die eine Variable. Andere Referenzen zeigen weiter auf die alte, gefüllte Map.

Die Methode nimmt keine Argumente entgegen und gibt immer undefined zurück. Sie lässt sich also nicht verketten wie set().

Rückgabewert

Typ
undefined
Beschreibung
Gibt immer undefined zurück.

Beispiele

Einfaches Leeren einer Map

const farben = new Map([
  ['rot', '#f00'],
  ['grün', '#0f0'],
  ['blau', '#00f']
]);

console.log(farben.size);
farben.clear();
console.log(farben.size);
console.log(farben.has('rot'));
3 0 false

Cache zurücksetzen, ohne Referenzen zu verlieren

const cache = new Map();

const ladeBenutzer = async (id) => {
  if (cache.has(id)) return cache.get(id);
  const daten = { id, name: `Benutzer ${id}` }; // Platzhalter für fetch()
  cache.set(id, daten);
  return daten;
};

// Ein anderes Modul hält dieselbe Referenz
const statistik = { cache };

await ladeBenutzer(1);
await ladeBenutzer(2);
console.log(statistik.cache.size);

// z. B. beim Logout: alle Einträge verwerfen
cache.clear();
console.log(statistik.cache.size);
2 0

clear() vs. Neuzuweisung

let a = new Map([['x', 1]]);
const b = a;

a = new Map();          // nur a zeigt auf eine neue Map
console.log(b.size);    // alte Map noch gefüllt

b.clear();              // leert das gemeinsame Objekt
console.log(b.size);
console.log(b.clear()); // Rückgabewert
1 0 undefined

// Wichtig · Fallstricke

  • Rückgabewert ist undefined: Ausdrücke wie map.clear().set(...) werfen einen TypeError.
  • Während der Iteration: Wird clear() innerhalb von for...of oder forEach() aufgerufen, endet die Schleife nach dem aktuellen Durchlauf. Es werden keine weiteren Einträge mehr besucht, und es gibt keinen Fehler.
  • Speicher: Nach clear() hält die Map keine Referenzen mehr auf Schlüssel und Werte. Diese kann die Speicherbereinigung freigeben, sofern sie nirgendwo sonst referenziert werden.
  • WeakMap hat kein clear(): Die Methode wurde aus der Spezifikation entfernt. Um eine WeakMap zu leeren, weist man eine neue Instanz zu.
  • Der Aufruf auf einem Objekt, das keine Map ist (z. B. Map.prototype.clear.call({})), wirft einen TypeError.
  • Kompatibilität: Wird von allen modernen Browsern und Node.js unterstützt (Baseline seit 2015).