blob: d88edd4f0415333d25e8cfd0c7e61b5e7fed28d0 (
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
|
---
title: 'ReferenceError: "x" is not defined'
slug: Web/JavaScript/Reference/Errors/Not_defined
tags:
- Erreur
- JavaScript
- Reference
- ReferenceError
translation_of: Web/JavaScript/Reference/Errors/Not_defined
original_slug: Web/JavaScript/Reference/Erreurs/Not_defined
---
<div>{{jsSidebar("Errors")}}</div>
<h2 id="Message">Message</h2>
<pre class="syntaxbox">ReferenceError: "x" is not defined
</pre>
<h2 id="Type_d'erreur">Type d'erreur</h2>
<p>{{jsxref("ReferenceError")}}.</p>
<h2 id="Quel_est_le_problème">Quel est le problème ?</h2>
<p>Une variable qui n'existe pas est référencée quelque part. Cette variable doit être déclarée ou il faut vérifier qu'elle est disponible dans le script concerné ou dans la portée utilisée.</p>
<div class="note">
<p><strong>Note :</strong> Lors du chargement d'une bibliothèque comme jQuery, assurez-vous de bien charger la bibliothèque avant d'accéder aux variables comme <code>$</code>. La balise {{HTMLElement("script")}} utilisée pour charger la bibliothèque doit être présente avant le code qui l'utilise.</p>
</div>
<h2 id="Exemples">Exemples</h2>
<h3 id="Exemple_de_variable_non_déclarée">Exemple de variable non déclarée</h3>
<pre class="brush: js example-bad">toto.substring(1); // ReferenceError: toto is not defined
</pre>
<p>La variable <code>toto</code> n'est définie nulle part. De plus, il faut qu'elle soit une chaîne de caractères afin que la méthode {{jsxref("String.prototype.substring()")}} puisse fonctionner.</p>
<pre class="brush: js example-good">var toto = "truc";
toto.substring(1); // "ruc"</pre>
<h3 id="Exemple_de_portée_invalide">Exemple de portée invalide</h3>
<p>Une variable doit être disponible dans le contexte d'exécution où elle est utilisée. Les variables définies au sein d'une fonction ne peuvent pas être utilisées en dehors de cette fonction car la variable appartient à la <em>portée</em> de la fonction.</p>
<pre class="brush: js example-bad">function numbers () {
var num1 = 2,
num2 = 3;
return num1 + num2;
}
console.log(num1); // ReferenceError num1 is not defined.</pre>
<p>Toutefois, une fonction peut accéder aux variables et aux fonctions définies dans la portée dans laquelle elle s'inscrit. Ainsi, une fonction définie dans la portée globale peut utiliser toutes les variables définies dans la portée globale.</p>
<pre class="brush: js example-good">var num1 = 2,
num2 = 3;
function numbers () {
return num1 + num2;
}
console.log(num1); // 2</pre>
<h2 id="Voir_aussi">Voir aussi</h2>
<ul>
<li><a href="/fr/docs/Web/JavaScript/Guide/Types_et_grammaire#Déclaration_de_variables">La déclaration de variables dans le guide JavaScript</a></li>
<li><a href="/fr/docs/Web/JavaScript/Guide/Fonctions#Portée_d'une_fonction">Les notions de portées dans le guide JavaScript</a></li>
</ul>
|