SyntaxError: Die Anwendung des 'delete'-Operators auf einen unqualifizierten Namen ist veraltet
Die JavaScript-Strict-Modus-ausgelöste Ausnahme "Die Anwendung des 'delete'-Operators auf einen unqualifizierten Namen ist veraltet" tritt auf, wenn versucht wird, Variablen mit dem delete
-Operator zu löschen.
Nachricht
SyntaxError: Delete of an unqualified identifier in strict mode. (V8-based) SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox) SyntaxError: Cannot delete unqualified property 'a' in strict mode. (Safari)
Fehlertyp
SyntaxError
nur im Strict-Modus.
Was ist schiefgelaufen?
Normale Variablen in JavaScript können mit dem delete
-Operator nicht gelöscht werden. Im Strict-Modus führt der Versuch, eine Variable zu löschen, zu einem Fehler und ist nicht erlaubt.
Der delete
-Operator kann nur Eigenschaften eines Objekts löschen. Objekteigenschaften sind "qualifiziert", wenn sie konfigurierbar sind.
Entgegen der weit verbreiteten Annahme hat der delete
-Operator nichts direkt mit der Freigabe von Speicher zu tun. Die Speicherverwaltung erfolgt indirekt durch das Entfernen von Referenzen, siehe die Seite zur Speicherverwaltung und die Seite zum delete
-Operator für weitere Details.
Dieser Fehler tritt nur im Strict-Modus-Code auf. In nicht-striktem Code gibt die Operation einfach false
zurück.
Beispiele
Den Inhalt einer Variable freigeben
Der Versuch, eine einfache Variable im Strict-Modus zu löschen, führt zu einem Fehler:
"use strict";
var x;
// …
delete x;
// SyntaxError: applying the 'delete' operator to an unqualified name
// is deprecated
Um den Inhalt einer Variable freizugeben, können Sie sie auf null
setzen:
"use strict";
var x;
// …
x = null;
// x can be garbage collected