SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
Fehlermeldung
SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox) SyntaxError: Delete of an unqualified identifier in strict mode. (Chrome)
Fehlertyp
SyntaxError
nur im Strict Mode.
Was ist falsch gelaufen?
Normale Variablen können in JavaScript nicht mit dem delete
Operator gelöscht werden. Im Strict Mode führt der Versuch des Löschens zu einem Fehler, weil es nicht erlaubt ist.
Der delete
Operator kann nur Eigenschaften eines Objektes löschen. Objekteigenschaften müssen dafür Konfigurierbar sein.
Wie oft fälschlicherweise angenommen, hat die delete
Operation nichts mit dem direkten freimachen von Speicher zu tun. Speicherverwaltung wird indirekt gemacht, mehr Informationen darüber auf den Seiten Speicherverwaltung und delete
.
Der Fehler tritt nur im Strict Mode auf. In normalem Code gibt die Operation einfach false
zurück.
Beispiele
Der Versuch eine einfache Variable zu Löschen funktioniert in JavaScript nicht unf führt im Strict Mode 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 zu leeren, kann man sie auf null
setzen:
'use strict';
var x;
// ...
x = null;
// x can be garbage collected