blob: 19d3f9b7475fc288292f95218ccf034c3ef3bf4f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
---
title: >-
SyntaxError: applying the 'delete' operator to an unqualified name is
deprecated
slug: Web/JavaScript/Reference/Errors/Delete_in_strict_mode
tags:
- Erreurs
- JavaScript
- SyntaxError
translation_of: Web/JavaScript/Reference/Errors/Delete_in_strict_mode
original_slug: Web/JavaScript/Reference/Erreurs/Delete_in_strict_mode
---
{{jsSidebar("Errors")}}
## 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
{{jsxref("SyntaxError")}}, uniquement en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode).
## Quel est le problème ?
Les variables JavaScript ne peuvent pas être supprimées grâce à l'opérateur [`delete`](/fr/docs/Web/JavaScript/Reference/Opérateurs/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`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_delete) et [la gestion de la mémoire en JavaScript](/fr/docs/Web/JavaScript/Gestion_de_la_mémoire).
Cette erreur ne se produit qu'en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode). 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 example-bad
'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 à {{jsxref("null")}} :
```js example-good
'use strict';
var x;
// ...
x = null;
// x peut être ramassée par le ramasse-miettes
```
## Voir aussi
- [`delete`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_delete)
- [La gestion de la mémoire en JavaScript](/fr/docs/Web/JavaScript/Gestion_de_la_mémoire)
- [TypeError: property "x" is non-configurable and can't be deleted](/en-US/docs/Web/JavaScript/Reference/Errors/Cant_delete)
|