Javascript delete

Objekte, Array-Items, Eigenschaften von Objekten löschen

delete löscht ein Objekt, die Eigenschaft eines Objekts oder das Element an einem Index aus einem Array, Javascript in fragt ab, ob eine bestimmte Eigenschaft eines Objekt exisitert. Was delete nicht macht: Speicher freigeben.

delete löscht ein Objekt, die Eigenschaft eines Objekts oder ein Element an einem bestimmten Index aus einem Array.

18-12-15 SITEMAP CSS HTML JS Basis JS Web Tutorial SVG

delete-Operator

Was so einfach klingt, ist ein heißes Eisen. Darum begegnen wir dem delete-Operator in wenigen Scripten. Noch einmal: Javascript delete gibt keine Speicher frei. Warum also sollte man etwas löschen?

Statt ein Objekt zu löschen, könnte man dem Objekt null zuweisen. Aber dann würden eine in-Abfrage oder eine for-in-Schleife das Objekt weiterhin erkennen und verarbeiten.

let gallery = {
    image1: "slide1",
    image2: "slide2",
    image3: "slide3"
};

gallery.image2 = null;
delete gallery.image3; 

let elem; 
for (elem in gallery) {
    console.log (gallery[elem]);
}

gibt zwei Elemente zurück: slide1 und null. delete erspart Schleifendurchläufe und die Abfrage auf null.

Der delete-Operator löscht implizit vereinbarte Variablen (die nicht durch das Schlüsselwort var oder let eingeleitet wurden), nicht aber durch das Schlüsswlwort var bzw. let deklarierte Variablen.

DOM-Elemente werden besser durch removeChild oder remove (noch nicht IE11) gelöscht.

Gelöscht und undefined

Wenn die delete-Operation gelingt, wird die Eigenschaft oder das Element auf undefined gesetzt. delete gibt true zurück, wenn das Element gelöscht werden kann, false wenn nicht.

Der Ausdruck delete ist eine unglückliche Wahl – remove hätte den Sinn und Zweck des delete-Operators besser getroffen.

x       = 42; 
let y   = 43; 
myObj   = { height: 100, width: 400 }
myObj.height = 640;   // erzeugt die Eigenschaft height

delete x;             //  true  (darf gelöscht werden, da implizit deklariert)
delete y;             //  false (darf nicht gelöscht werden, da mit let deklariert)
delete Math.PI;       //  false (vordefinierte Eigenschaften dürfen nicht gelöscht werden)
delete myObj.height;  //  true  (Benutzerdefinierte Eigenschaften dürfen gelöscht werden)
delete myObj;         //  true  (kann gelöscht werden, wenn implizit deklariert)

Array-Elemente mit delete löschen

Wenn ein Array-Element gelöscht wird, ist die Länge des Arrays davon nicht betroffen. Wird das Array-Element mit dem delete-Operator gelöscht, liegt das Element nicht länger im Array.

colors = new Array("red", "green", "blue", "yellow", "purple");
delete colors[3];
if (3 in colors) {
   // wird nicht ausgeführt
}

Wenn das Array-Element weiter existieren, aber keinen definierten Wert haben soll, wird undefined anstelle von delete benutzt.

colors    = new Array("red", "green", "blue", "yellow", "purple");
colors[3] = undefined;
if (3 in colors) {
   // wird ausgeführt
}

Javascript in-Operator

Der in-Operator gibt true zurück, wenn eine angegebene Eigenschaft eines Objekt exisitert.

property in objectName

wobei property ein String oder ein numerischer Ausdruck ist, der Name einer Eigenschaft oder der Index eines Arrays ist.

Was Javascript in nicht liefert: Ob ein Array einen Wert enthält oder nicht.

let x = [1,2];
1 in x; // true
3 in x; // false
0 in x; // true