Thanks to visit codestin.com
Credit goes to developer.mozilla.org

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 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 mode.

Was ist schiefgelaufen?

Normale Variablen in JavaScript können nicht mit dem delete-Operator gelöscht werden. Im strict mode führt ein Löschversuch einer Variablen zu einem Fehler und ist nicht erlaubt.

Der delete-Operator kann nur Eigenschaften eines Objekts löschen. Objekteigenschaften sind "qualifiziert", wenn sie konfigurierbar sind.

Im Gegensatz zur weit verbreiteten Meinung hat der delete-Operator nichts mit der direkten Speicherfreigabe zu tun. Das Speichermanagement erfolgt indirekt über das Aufheben von Referenzen, siehe die Seite über das Speichermanagement und die Seite des delete-Operators für weitere Details.

Dieser Fehler tritt nur in strict mode code auf. In nicht-strengem Code gibt die Operation einfach false zurück.

Beispiele

Freigeben des Inhalts einer Variablen

Der Versuch, eine einfache Variable im strict mode zu löschen, führt zu einem Fehler:

js
"use strict";

var x;

// …

delete x;

// SyntaxError: applying the 'delete' operator to an unqualified name
// is deprecated

Um den Inhalt einer Variablen freizugeben, kann man sie auf null setzen:

js
"use strict";

var x;

// …

x = null;

// x can be garbage collected

Siehe auch