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

Message

SyntaxError: Calling delete on expression not allowed in strict mode (Edge)
SyntaxError: applying the 'delete' operator to an unqualified name is deprecated (Firefox)
SyntaxError: Delete of an unqualified identifier in strict mode. (Chrome)

Type d'erreur

SyntaxError, uniquement en mode strict.

Quel est le problème ?

Les variables JavaScript ne peuvent pas être supprimées grâce à l'opérateur delete. En mode strict, toute tentative de suppression d'une variable lèvera une exception.

L'opérateur delete sert uniquement à supprimer des propriétés sur un objet. Les propriétés d'un objet sont « qualifiées » si elles sont configurables.

Contrairement à ce qu'on pourrait penser, l'opérateur delete n'a rien à voir avec la libération de la mémoire. La gestion de la mémoire se fait indirectement en cassant les références utilisées. Pour plus d'informations, consulter les pages sur delete et la gestion de la mémoire en JavaScript.

Cette erreur ne se produit qu'en mode strict. En mode non-strict, l'opération renvoie simplement false.

Exemples

Essayer de supprimer une variable normale avec delete ne fonctionne pas, voire lève une exception en mode strict :

js
"use strict";

var x;

// ...

delete x;

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

Pour libérer le contenu d'une variable, on peut la passer à null :

js
"use strict";

var x;
// ...
x = null;

// x peut être ramassée par le ramasse-miettes

Voir aussi