Signatur
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
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'));
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);
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
// Wichtig · Fallstricke
- Rückgabewert ist
undefined: Ausdrücke wiemap.clear().set(...)werfen einenTypeError. - Während der Iteration: Wird
clear()innerhalb vonfor...ofoderforEach()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. WeakMaphat keinclear(): 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 einenTypeError. - Kompatibilität: Wird von allen modernen Browsern und Node.js unterstützt (Baseline seit 2015).