SyntaxError: Das Anwenden des 'delete'-Operators auf einen unqualifizierten Namen ist veraltet

Die Ausnahme "Das Anwenden des 'delete'-Operators auf einen unqualifizierten Namen ist veraltet" im JavaScript-Strict-Modus 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

Was ist schiefgelaufen?

Normale Variablen in JavaScript können nicht mit dem delete-Operator gelöscht werden. Im Strict-Modus wird beim Versuch, eine Variable zu löschen, ein Fehler ausgelöst und es 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 mit dem direkten Freigeben von Speicher zu tun. Das Speichermanagement erfolgt indirekt durch das Aufheben von Referenzen, siehe die Seite zum Speichermanagement und die Seite zum delete-Operator für weitere Details.

Dieser Fehler tritt nur im Strict-Mode-Code auf. In nicht-striktem Code gibt die Operation einfach false zurück.

Beispiele

Den Inhalt einer Variablen freigeben

Der Versuch, eine einfache Variable im Strict-Modus zu löschen, wirft einen Fehler:

js
"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:

js
"use strict";

var x;

// …

x = null;

// x can be garbage collected

Siehe auch