Let

DéfinitionPortée de Bloc

Let introduit un nouveau niveau de portée : le bloc. Un bloc est délimité par une paire d'accolades. Les blocs sont utilisés essentiellement dans les structures de contrôle.

ExempleTestez

1
if (true) {
2
  var a = 1;
3
  window.console.log(a);
4
}
5
window.console.log(a); // pas d'erreur
6
7
if (true) {
8
  let b = 1;
9
  window.console.log(b);
10
}
11
window.console.log(b); // génére une erreur

avec let la variable b n'est visible que dans le bloc du if

A l’extérieur une erreur est déclenchée -> ReferenceError: b is not defined

ExempleTestez

1
let tableau = [3, 5, 7];
2
3
for (let val of tableau) {
4
  window.console.log(val);
5
}
6
window.console.log(val); // génére une erreur

val n'est visible que dans le bloc du for.

A l’extérieur une erreur est déclenchée -> ReferenceError: val is not defined

ExempleTestez

See the Pen cours-js-fonction-portee-bloc by BCMM-W2D (@bcmm-w2d) on CodePen.

Portée de bloc var
Portée - var

La variable i appartenant à la portée window, c'est la même qui est partagée pour chaque fonction de notre tableau.

Chaque fonction retourne donc la même valeur de i. Comme i vaut 3 après le dernier tour de boucle, chaque fonction retourne 3.

Portée de bloc let
Portée - Let

Chaque fonction contient une variable i différente, dont le contenu correspond au moment de sa création.

Chaque fonction retourne donc une valeur différente.