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
letetconst. Les variables déclarées avecletouconstà 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 avecvarn'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.