Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Der delete Operator entfernt eine Eigenschaft aus einem Objekt. Wenn der Wert der Eigenschaft ein Objekt ist und es keine Verweise mehr auf dieses Objekt gibt, wird das Objekt, das von dieser Eigenschaft gehalten wird, schließlich automatisch freigegeben.
Hinweis: Die Syntax erlaubt eine breitere Palette von Ausdrücken nach dem delete Operator, aber nur die obigen Formen führen zu sinnvollen Verhaltensweisen.
Der Name eines Objekts oder ein Ausdruck, der zu einem Objekt ausgewertet wird.
propertyDie zu löschende Eigenschaft.
true in allen Fällen, außer wenn die Eigenschaft eine eigene nicht-konfigurierbare Eigenschaft ist, in welchem Fall false im Nicht-Strikt-Modus zurückgegeben wird.
Wird im Striktmodus geworfen, wenn die Eigenschaft eine eigene nicht-konfigurierbare Eigenschaft ist.
ReferenceErrorWird geworfen, wenn object super ist.
Der delete Operator hat die gleiche Priorität wie andere unäre Operatoren wie typeof. Daher akzeptiert er jeden Ausdruck, der von Operatoren höherer Priorität gebildet wird. Jedoch führen die folgenden Formen im Striktmodus zu frühen Syntaxfehlern:
Da Klassen automatisch im Striktmodus sind und private Elemente nur legal in Klassenkörpern referenziert werden können, bedeutet dies, dass private Elemente niemals gelöscht werden können. Während delete identifier funktionieren kann, wenn identifier auf eine konfigurierbare Eigenschaft des globalen Objekts verweist, sollten Sie diese Form vermeiden und stattdessen mit globalThis voranstellen.
Obwohl andere Ausdrücke akzeptiert werden, führen sie nicht zu sinnvollen Verhaltensweisen:
Der delete Operator entfernt eine gegebene Eigenschaft aus einem Objekt. Bei erfolgreichem Löschen wird true zurückgegeben, andernfalls false. Anders als oft angenommen (vielleicht aufgrund anderer Programmiersprachen wie delete in C++), hat der delete Operator nichts mit der direkten Speicherfreigabe zu tun. Der Speicher wird indirekt durch das Aufbrechen von Verweisen verwaltet. Weitere Informationen finden Sie auf der Seite zum Speichermanagement.
Es ist wichtig, die folgenden Szenarien zu berücksichtigen:
Hinweis: Das folgende Beispiel verwendet nur Funktionen im Nicht-Strikt-Modus, wie das implizite Erstellen globaler Variablen und das Löschen von Bezeichnern, die im Striktmodus verboten sind.
Im folgenden Beispiel löschen wir eine eigene Eigenschaft eines Objekts, während eine Eigenschaft mit demselben Namen in der Prototypenkette verfügbar ist:
Wenn Sie ein Array-Element löschen, wird die length des Arrays nicht beeinflusst. Dies gilt auch, wenn Sie das letzte Element des Arrays löschen.
Wenn der delete Operator ein Array-Element entfernt, befindet sich dieses Element nicht mehr im Array. Im folgenden Beispiel wird trees[3] mit delete entfernt.
Dies erzeugt ein dünn besetztes Array mit einem leeren Slot. Wenn Sie möchten, dass ein Array-Element existiert, aber einen undefinierten Wert hat, verwenden Sie den Wert undefined anstelle des delete Operators. Im folgenden Beispiel wird trees[3] der Wert undefined zugewiesen, aber das Array-Element existiert weiterhin:
Wenn Sie stattdessen ein Array-Element durch Ändern des Inhalts des Arrays entfernen möchten, verwenden Sie die Methode splice(). Im folgenden Beispiel wird trees[3] vollständig aus dem Array mit splice() entfernt:
Wenn eine Eigenschaft als nicht konfigurierbar markiert ist, hat delete keine Wirkung und gibt false zurück. Im Striktmodus wird dies einen TypeError auslösen.
var erstellt nicht-konfigurierbare Eigenschaften, die nicht mit dem delete Operator gelöscht werden können:
Im Striktmodus würde dies eine Ausnahme auslösen.
Wenn eine globale Eigenschaft konfigurierbar ist (z. B. durch direkte Eigenschaftszuweisung), kann sie gelöscht werden, und nachfolgende Verweise darauf als globale Variablen werden einen ReferenceError erzeugen.
| ECMAScript® 2027 Language Specification # sec-delete-operator |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.