Il existe en javascript deux portés de variable : **Locale** et **Globale**.<br>
**Variable locale** : accessible à l'intérieur d'une fonction à partir de la ligne où elle est déclarée <br>
**Variable globale** : accessible dans tout le programme (sachant que la plus grande portée est `window`)<br>
Il faut garder à l'esprit que une `function = une portée`
### Prenant un exemple : <br>
```
var t=10
test1 = function() {
var x = 1;
test2 = function() {
var x = 2;
test3 = function() {
var x = 3;
console.log(x); //affiche 3
}();
}();
console.log(x); //affiche 1 car x =3 est déclaré dans un porté non accessible
}();
console.log(x); // undefined car aucune variable x déclarée dans la portée actuelle`
console.log(x); //affiche 10 car t est une variable globale
```
### Attention aux variables non déclarées avec le mot clé `var` :
Ce bout de code génère une boucle infinie car les deux boucles utilisent la même variable de boucle `i`:
```
function genericFunctionName() {
for(i = 0; i < myArray.length; i++) {
console.log(i);
}
}
for(i = 0; i < 10; i++) {
genericFunctionName();
}
```
Pour remédier à ce problème on utilise le mot clé `var `pour déclarer toutes nos variables
```
function genericFunctionName() {
for(var i = 0; i < myArray.length; i++) {
console.log(i);
}
}
for(var i = 0; i < 10; i++) {
genericFunctionName(); //la portée de la permière variable `i` n'est pas accessible à ce niveau du programme
}
```
### Créer un espace de travail sécurisé pour nos variables :+1_tone3:
Afin de maîtriser la portée de nos variable, il est conseillé de commencer tout `fichier.js` ou balise `<script></script>` par la première ligne et de le terminer par la 2ème.