Löschen in JavaScript
Der unäre Operator »delete« hat dieselbe Priorität wie der unäre Operator »typeof«.
- Eigenschaften von Operatoren
A P A (A = Aritaet, P = Position [Zirkumfix, Praefix, Infix], A = Assoziativitaet)
() 1 Z Eingeklammerter Ausdruck
+ - typeof delete 1 P Unaere vorangestellte Operatoren (Vorzeichen)
* / 2 I L "Punktrechnung": Multiplikation, Division
+ - 2 I L "Strichrechnung": Addition, Subtraktion
< 2 I L Kleiner
=== !== 2 I L Gleichheit, Ungleichheit
= ()=> 2 I R Zuweisung, Klammerpfeil
Er erwartet einen Eintragsausdruck als Operand, welcher echt sein sollte.
Er verwendet nicht – wie die meisten anderen Operatoren – den Wert des Operanden, sondern – wie bei einer Zuweisung – den Eintrag selber.
Dieser Eintrag wird bei der Auswertung eines delete-Ausdrucks gelöscht.
»delete« ist also ein Wirkoperator.
»delete v.e« löscht beipielsweise den Eintrag »e« des Verzeichnisses »v« in dem Sinne, daß der Ausdruck »"e" in v« unmittelbar danach den Wert »false« hat.
Es ist auch möglich, »delete« mit einem Bezeichner zu verwenden (wie in »delete e«), doch gilt dies als schlechter Stil und sollte vermieden werden.
Es ist auch möglich, »delete« mit einem Wert zu verwenden, der keine Eigenschaft ist (wie in »delete 1«), doch gilt dies als schlechter Stil und sollte vermieden werden; außerdem ist es wirkungslos.
- Auswertung
"x" in this
false
- Auswertung
x = 1
1
- Auswertung
x
1
- Auswertung
"x" in this
true
- Auswertung
delete this.x
true
- Auswertung
"x" in this
false
- Auswertung
x
ReferenceError: x is not defined
Nicht-konfigurierbare Eigenschaften *
Einige Eigenschaften sind „nicht-konfigurierbar“. (Die Attribute nicht-konfigurierbarer Eigenschaften können nicht verändert werden.)
- Auswertung
this.Object.getOwnPropertyDescriptor( this, "Infinity" ).configurable
false
Als Operand von »delete« sollten nur konfigurierbare Eigenschaften verwendet werden.
Nicht-konfigurierbare Eigenschaften können mit »delete« nicht gelöscht werden.
Der Wert einer Anwendung von »delete« *
Eine Anwendung von »delete« hat den Wert »false«, falls der Operand eine Eigenschaft angibt, die nicht-konfigurierbar ist, und sonst den Wert »true«.