Sobes.tech
Junior

Qu'est-ce que la portée en JavaScript?

sobes.tech IA

Réponse de l'IA

La portée (Scope) en JavaScript est le contexte dans lequel les variables et fonctions sont définies et accessibles.

En termes simples, elle détermine où il est possible de faire référence à une variable ou une fonction dans le code.

Il existe plusieurs types de portée:

  • Portée globale (Global Scope): Les variables déclarées en dehors de toute fonction se trouvent dans la portée globale. Elles sont accessibles de n'importe où dans le code.
    // Variable globale
    let globalVar = "Je suis visible partout";
    
    function showGlobal() {
      console.log(globalVar); // Disponible dans la fonction
    }
    
    showGlobal();
    
  • Portée locale (Local/Function Scope): Les variables déclarées à l'intérieur d'une fonction sont dans la portée locale de cette fonction. Elles ne sont accessibles qu'à l'intérieur de cette fonction et dans ses fonctions imbriquées, mais pas de l'extérieur.
    function showLocal() {
      // Variable locale
      let localVar = "Je ne suis visible qu'ici";
      console.log(localVar);
    }
    
    showLocal();
    // console.log(localVar); // Erreur: localVar n'est pas défini
    
  • Portée de bloc (Block Scope): Introduite en ES6 (ES2015) avec let et const. Les variables déclarées avec let ou const à l'intérieur d'accolades ({}), que ce soit dans des blocs de code, des boucles ou des conditions, ont une portée de bloc. Les variables déclarées avec var n'ont pas de portée de bloc.
    if (true) {
      // Variable avec portée de bloc
      let blockVar = "Visible uniquement dans ce bloc";
      console.log(blockVar);
    }
    
    // console.log(blockVar); // Erreur: blockVar n'est pas défini
    
    for (let i = 0; i < 2; i++) {
      // Variable avec portée de bloc dans la boucle
      console.log(i);
    }
    
    // console.log(i); // Erreur: i n'est pas défini (si let a été utilisé)
    

Il est également important de comprendre le concept de chaîne de portée (Scope Chain). Lorsqu'une variable est recherchée, JavaScript commence par l'environnement actuel. Si elle n'est pas trouvée, il passe à l'environnement parent, et ainsi de suite, jusqu'à l'environnement global. Si la variable n'est pas trouvée, une erreur ReferenceError est levée.