Sobes.tech
Junior

Mi az a láthatósági kör JavaScript-ben?

sobes.tech MI

Válasz az MI-től

A JavaScriptben a láthatósági (Scope) terület az a kontextus, amelyben a változók és függvények definiálva vannak és elérhetők.

Egyszerűbben fogalmazva, meghatározza, hogy a kódban hol lehet hivatkozni egy változóra vagy függvényre.

Számos típusú láthatósági terület létezik:

  • Globális láthatósági terület (Global Scope): Az olyan változók, amelyeket bármilyen függvényen kívül deklaráltak, a globális területen vannak. Bármely helyről elérhetők a kódban.
    // Globális változó
    let globalVar = "Mindenhol látható";
    
    function showGlobal() {
      console.log(globalVar); // A függvényen belül elérhető
    }
    
    showGlobal();
    
  • Helyi (függvény) láthatósági terület (Local/Function Scope): A függvényen belül deklarált változók a függvény helyi területén vannak. Csak ebben a függvényben és a beágyazott függvényekben érhetők el, kívülről nem.
    function showLocal() {
      // Helyi változó
      let localVar = "Csak itt látom";
      console.log(localVar);
    }
    
    showLocal();
    // console.log(localVar); // Hiba: localVar nincs definiálva
    
  • Blokk szintű láthatósági terület (Block Scope): Az ES6 (ES2015) bevezetésével a let és const segítségével. A {} közötti változók, például kódblokkokban, ciklusokban vagy feltételekben, blokk szintű láthatósággal rendelkeznek. A var-ral deklarált változók nem rendelkeznek blokk szintű láthatósággal.
    if (true) {
      // Blokk szintű változó
      let blockVar = "Csak ebben a blokkban látható";
      console.log(blockVar);
    }
    
    // console.log(blockVar); // Hiba: blockVar nincs definiálva
    
    for (let i = 0; i < 2; i++) {
      // Blokk szintű változó a ciklusban
      console.log(i);
    }
    
    // console.log(i); // Hiba: i nincs definiálva (ha let-et használtak)
    

Fontos megérteni a Scope Chain (Láthatósági lánc) fogalmát is. Amikor a JavaScript megpróbál értéket találni egy változónak, először a jelenlegi környezetben keresi. Ha nem találja, a külső (szülő) környezetbe lép, és így tovább, egészen a globális környezetig. Ha sehol nem találja, ReferenceError hibát dob.