Portée (scope)

DéfinitionNotion de portée

La portée (le scope) est ce que voit l'interpréteur à un moment donné de l'exécution du code.

Au lancement nous nous trouvons dans une portée globale. Dans une page web, c'est l'onglet de votre navigateur dans lequel vous vous trouvez, représenté par la variable window.

Portée - Window
1
let a;

Dès que l'interpréteur exécute une fonction, il se retrouve dans une nouvelle portée.

Portée - Fonction
1
let a;
2
let maFonction = function(){
3
  let b;                   
4
};

La déclaration d'une variable dans une portée avec le mot clé let, la rend visible dans la portée et dans ses sous portées.

Les variables a et maFonction ont une portée globale, c'est à dire qu'elles sont visibles dans window et dans la fonction.

La variable b n'a qu'une portée locale, elle n'est visible que par la fonction.

ExempleTestez

1
let global = 1;
2
let maFonction = function(){
3
  let local = 2;
4
  window.console.log(global);
5
  window.console.log(local);
6
};
7
window.console.log(global);
8
window.console.log(local);

DéfinitionDéclaration multiple

On peut déclarer une variable avec le même nom qu'une variable déclarée dans une autre portée.

Lorsque l'interpréteur doit utiliser une variable, il cherche si la variable appartient à sa portée, sinon il remonte d'une portée jusqu'à trouver la déclaration de la variable.

Portée - Multiple
1
let a;
2
let fonction1 = function(){
3
  let a; 
4
  let fonction2 = function(){
5
    let a;
6
  }                  
7
};

ExempleTestez

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

Portée (scope)