Signatur
Beschreibung
Die Methode clear() leert ein Set vollständig und verändert dabei die bestehende Instanz direkt. Danach hat set.size den Wert 0, und has() gibt für jeden Wert false zurück.
Sinnvoll ist das, wenn andere Teile des Programms eine Referenz auf dasselbe Set halten, etwa einen Cache, eine Auswahl von IDs oder eine Liste bereits verarbeiteter Einträge. Mit set = new Set() würdest du nur die eigene Variable neu belegen. Alle anderen Referenzen zeigen dann weiter auf das alte, gefüllte Set.
Der Rückgabewert ist immer undefined. Deshalb lässt sich clear() nicht wie add() verketten.
Rückgabewert
undefined).Beispiele
Set vollständig leeren
const tags = new Set(['js', 'css', 'html']);
console.log(tags.size);
tags.clear();
console.log(tags.size);
console.log(tags.has('js'));
Geteilte Auswahl zurücksetzen (Referenz bleibt erhalten)
const selection = new Set();
const toolbar = { selection }; // eine zweite Stelle hält dieselbe Referenz
selection.add(101).add(102).add(107);
console.log(toolbar.selection.size);
// Alles abwählen: clear() wirkt auf alle Referenzen
selection.clear();
console.log(toolbar.selection.size);
Cache für bereits verarbeitete URLs leeren
const visited = new Set();
const crawl = (url) => {
if (visited.has(url)) return 'übersprungen';
visited.add(url);
return 'verarbeitet';
};
console.log(crawl('/start'));
console.log(crawl('/start'));
visited.clear(); // neuer Durchlauf
console.log(crawl('/start'));
clear() gibt undefined zurück
const s = new Set([1, 2]);
const result = s.clear();
console.log(result);
// s.clear().add(3); // TypeError: Cannot read properties of undefined
// Wichtig · Fallstricke
- Nicht verkettbar:
clear()gibtundefinedzurück. Ein Aufruf wieset.clear().add(x)löst einenTypeErroraus. clear()odernew Set()?clear()ändert die bestehende Instanz. Alle Stellen, die eine Referenz darauf halten, sehen danach ein leeres Set. Eine neue Zuweisung ändert nur die eigene Variable.- Während der Iteration: Rufst du
clear()innerhalb vonfor...ofoderforEachauf, endet die Schleife nach dem aktuellen Durchlauf. Weitere Elemente werden nicht mehr besucht. - Speicher: Die Objekte im Set werden nicht gelöscht. Nur die Referenzen des Sets auf sie verschwinden, sodass die Speicherbereinigung sie freigeben kann, wenn sonst niemand mehr auf sie zeigt.
WeakSet:WeakSethat keineclear()-Methode mehr. Sie war früher vorhanden, wurde aber aus der Spezifikation entfernt.- Seit ES2015 in allen modernen Browsern und in Node.js verfügbar.