Articles

5 Dinge, die Sie über den Löschoperator in JavaScript wissen müssen

Foto von Markus Winkler auf Unsplash

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 windowMath 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.

Löschoperator in JavaScript

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 MathDate, 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 – wenn true, kann der Wert geändert werden, ansonsten ist er schreibgeschützt.
  • enumerable – wenn true, wird er in Schleifen aufgelistet, sonst nicht.
  • configurable – wenn true, 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 undefiniert 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 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.