5 Dinge, die Sie über den Löschoperator in JavaScript wissen müssen
In JavaScript, wird der Delete-Operator verwendet, um eine Eigenschaft eines Objekts zu löschen. Nach dem Löschen der eigentlichen Eigenschaft ist diese nicht mehr zugänglich und gibt undefined
zurück.
Der Aufruf des delete
-Operators gibt true
zurück, wenn er eine Eigenschaft entfernt und false
andernfalls. Er ist nur auf die Eigenschaften eines Objekts wirksam, er hat keinen Einfluss auf Variablen- oder Funktionsnamen.
Der Löschoperator sollte nicht auf vordefinierte JavaScript-Objekteigenschaften wie window
Math
und Date
angewendet werden. Es kann Ihre Anwendung zum Absturz bringen.
Lassen Sie uns einige Fakten über den delete
-Operator unter die Lupe nehmen.
Objekteigenschaften löschen
Die einzige Möglichkeit, die Eigenschaften eines Objekts in JavaScript vollständig zu entfernen, ist die Verwendung des delete
-Operators.
Wenn die Eigenschaft, die Sie zu löschen versuchen, nicht existiert, hat delete keine Wirkung und kann true zurückgeben.
Kann man Variablen in Javascript löschen?
Der Löschoperator entfernt eine Eigenschaft aus einem Objekt. Eine Variable kann er nicht löschen. Eine mit var
deklarierte Eigenschaft kann nicht aus dem globalen Bereich oder aus dem Bereich einer Funktion gelöscht werden.
Wenn Sie eine Variable ohne var deklarieren, kann sie gelöscht werden. Schauen wir uns das folgende Beispiel an.
Die ohne das Schlüsselwort var
deklarierte Variable wird intern als Eigenschaft des window
Objekts gespeichert. Wir können also die Eigenschaften des window
-Objekts löschen.
Können wir Werte aus einem Array löschen?
Da JavaScript-Arrays Objekte sind, können Elemente mit delete
gelöscht werden.
delete
wird die Objekteigenschaft löschen, aber es wird das Array nicht neu indizieren oder seine Länge aktualisieren. Dies lässt es so aussehen, als wäre es undefined
.
Die Verwendung von delete
kann undefinierte Löcher im Array hinterlassen. Verwenden Sie stattdessen pop()
shift()
, oder splice()
.
Können wir eingebaute Objekte löschen?
Löschen von eingebauteneingebaute Objekte wie Math
Date
, und window
Objekte sind unsicher und können Ihre gesamte Anwendung zum Absturz bringen.
Löschen von nicht konfigurierbaren Eigenschaften
Objekteigenschaften haben neben einem value
drei besondere Attribute:
-
writable
– wenntrue
, kann der Wert geändert werden, ansonsten ist er schreibgeschützt. -
enumerable
– wenntrue
, wird er in Schleifen aufgelistet, sonst nicht. -
configurable
– wenntrue
, kann die Eigenschaft gelöscht oder die Attribute modifiziert werden, sonst nicht veränderbar.
Die mit Object.defineProperty
zugewiesenen Werte, die in einem Objekt auf configurable: false
gesetzt sind, können nicht gelöscht werden.
Im Strict-Modus, wird ein Fehler ausgegeben, wenn Sie versuchen, eine nicht konfigurierbare Eigenschaft zu löschen.
Fazit
delete
ist der einzig wahre Weg, um die Eigenschaften eines Objekts ohne Rückstände zu entfernen, aber es arbeitet ~100 mal langsamer, wenn Sie delete
in Schleifen verwenden.
Die alternative Lösung ist das Setzen des Wertes auf un
definiert wie object = undefined
. Es löscht die Eigenschaft nicht vollständig, sondern setzt nur den Wert auf undefiniert. Die Wahl ist nicht gerade eine herausragende Lösung, aber wenn Sie sie mit Bedacht einsetzen, können Sie die Leistung verbessern.
Das ist alles! Ich hoffe, dieser Text konnte helfen, den Delete-Operator zu perforieren
Danke fürs Lesen 🙂