Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
SyntaxError: Die Anwendung des 'delete'-Operators auf einen nicht qualifizierten Namen ist veraltet
Die JavaScript-strict mode-spezifische Ausnahme „Die Anwendung des 'delete'-Operators auf einen nicht qualifizierten Namen ist veraltet" tritt auf, wenn versucht wird, Variablen mit demdelete-Operator zu löschen.
In diesem Artikel
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 imstrict mode.
Was ist schiefgelaufen?
Normale Variablen in JavaScript können nicht mit demdelete-Operator gelöscht werden. Im strict mode führt ein Löschversuch einer Variablen zu einem Fehler und ist nicht erlaubt.
Derdelete-Operator kann nur Eigenschaften eines Objekts löschen. Objekteigenschaften sind "qualifiziert", wenn sie konfigurierbar sind.
Im Gegensatz zur weit verbreiteten Meinung hat derdelete-Operatornichts mit der direkten Speicherfreigabe zu tun. Das Speichermanagement erfolgt indirekt über das Aufheben von Referenzen, siehe die Seite über dasSpeichermanagement und die Seite desdelete-Operators für weitere Details.
Dieser Fehler tritt nur instrict mode code auf. In nicht-strengem Code gibt die Operation einfachfalse zurück.
Beispiele
>Freigeben des Inhalts einer Variablen
Der Versuch, eine einfache Variable im strict mode zu löschen, führt zu einem Fehler:
"use strict";var x;// …delete x;// SyntaxError: applying the 'delete' operator to an unqualified name// is deprecatedUm den Inhalt einer Variablen freizugeben, kann man sie aufnull setzen:
"use strict";var x;// …x = null;// x can be garbage collected