aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/errors/reserved_identifier/index.md
blob: e911418f06b2ed093f0899ad167955a63c6cd882 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
---
title: 'SyntaxError: "x" is a reserved identifier'
slug: Web/JavaScript/Reference/Errors/Reserved_identifier
tags:
  - Erreurs
  - JavaScript
  - SyntaxError
translation_of: Web/JavaScript/Reference/Errors/Reserved_identifier
original_slug: Web/JavaScript/Reference/Erreurs/Reserved_identifier
---
{{jsSidebar("Errors")}}

## Message

    SyntaxError: The use of a future reserved word for an identifier is invalid (Edge)
    SyntaxError: "x" is a reserved identifier (Firefox)
    SyntaxError: Unexpected reserved word (Chrome)

## Type d'erreur

{{jsxref("SyntaxError")}}

## Quel est le problème ?

[Les mots-clés réservés](/fr/docs/Web/JavaScript/Reference/Grammaire_lexicale#Mots-clés_réservés_selon_ECMAScript_2015) lèveront une exception s'ils sont utilisés en tant qu'identifiants. Voici les mots-clés réservés en mode strict et en mode _sloppy_ :

- `enum`

Voici les mots-clés uniquement réservés en mode strict :

- `implements`
- `interface`
- {{jsxref("Statements/let", "let")}}
- `package`
- `private`
- `protected`
- `public`
- `static`

## Exemples

### Mots-clés réservés en modes strict et non-strict

L'identifiant `enum` est réservé dans les différents cas :

```js example-bad
var enum = { RED: 0, GREEN: 1, BLUE: 2 };
// SyntaxError: enum is a reserved identifier
```

En mode strict, d'autres mots-clés sont réservés :

```js example-bad
"use strict";
var package = ["pomme", "poire", "pêches"];
// SyntaxError: package is a reserved identifier
```

Pour ne pas avoir l'erreur, il faudra renommer les variables :

```js example-good
var enumCouleurs = { RED: 0, GREEN: 1, BLUE: 2 };
var liste = ["pomme", "poire", "pêches"];
```

### Mettre à jour les anciens navigateurs

Si vous utilisez un ancien navigateur qui n'implémente pas [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) ou [`class`](/fr/docs/Web/JavaScript/Reference/Instructions/class), vous devrez mettre à jour votre navigateur :

```js
"use strict";
class DocArchiver {}

// SyntaxError: class is a reserved identifier
// (lève une exception dans les anciens navigateurs
// tels que Firefox 44 et les versions antérieures)
```

## Voir aussi

- [Utiliser de bons noms de variable](https://wiki.c2.com/?GoodVariableNames)