aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/errors/var_hides_argument/index.md
blob: 8e98669ddf7cb23bb09071df024c507224627c3e (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
---
title: 'TypeError: variable "x" redeclares argument'
slug: Web/JavaScript/Reference/Errors/Var_hides_argument
tags:
  - Erreurs
  - JavaScript
  - TypeError
translation_of: Web/JavaScript/Reference/Errors/Var_hides_argument
original_slug: Web/JavaScript/Reference/Erreurs/Var_hides_argument
---
{{jsSidebar("Errors")}}

## Message

    TypeError: variable "x" redeclares argument (Firefox)

## Type d'erreur

Une erreur {{jsxref("TypeError")}}, uniquement [en mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode).

## Quel est le problème ?

Le même nom de variable est utilisé comme nom pour un paramètre et comme nom de variable via une affectation [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var). Cela peut être lié à un conflit de nommage et le moteur envoie un avertissement.

Cette erreur ne se produit qu'en mode strict. Pour du code non-strict, la redéclaration est ignorée silencieusement..

## Exemples

### Exemples invalides

Ici, la variable `arg` redéclare l'argument de la fonction :

```js example-bad
"use strict";

function f(arg) {
  var arg = "foo";
}
```

### Exemples valides

Pour résoudre ce problème, on pourra généralement retirer l'instruction [`var`](/fr/docs/Web/JavaScript/Reference/Instructions/var) car la variable existe déjà et peut être utilisée. Si on ne veut pas utiliser cette même variable, mieux vaudra renommer le paramètre ou la variable interne afin de lever l'ambiguïté.

```js example-good
"use strict";

function f(arg) {
  arg = "foo";
}
```

## Voir aussi

- [Le mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode)