Sobes.tech
Junior

Wat is de scope in JavaScript?

sobes.tech AI

Antwoord van AI

De scope (Bereik) in JavaScript is de context waarin variabelen en functies gedefinieerd en toegankelijk zijn.

Kort gezegd bepaalt het waar in de code naar een variabele of functie verwezen kan worden.

Er zijn verschillende types scope:

  • Globale scope (Global Scope): Variabelen die buiten functies worden gedeclareerd, bevinden zich in de globale scope. Ze zijn overal in de code toegankelijk.
    // Globale variabele
    let globalVar = "Ik ben overal zichtbaar";
    
    function showGlobal() {
      console.log(globalVar); // Beschikbaar binnen de functie
    }
    
    showGlobal();
    
  • Lokale (Functie) scope (Local/Function Scope): Variabelen die binnen een functie worden gedeclareerd, bevinden zich in de lokale scope van die functie. Ze zijn alleen binnen die functie en geneste functies toegankelijk, maar niet daarbuiten.
    function showLocal() {
      // Lokale variabele
      let localVar = "Zie ik alleen hier";
      console.log(localVar);
    }
    
    showLocal();
    // console.log(localVar); // Fout: localVar is niet gedefinieerd
    
  • Blok scope (Block Scope): Geïntroduceerd in ES6 (ES2015) met let en const. Variabelen gedeclareerd met let of const binnen accolades ({}), zoals in codeblokken, lussen of voorwaarden, hebben blokscope. Variabelen gedeclareerd met var hebben geen blokscope.
    if (true) {
      // Variabele met blokscope
      let blockVar = "Alleen zichtbaar in dit blok";
      console.log(blockVar);
    }
    
    // console.log(blockVar); // Fout: blockVar is niet gedefinieerd
    
    for (let i = 0; i < 2; i++) {
      // Variabele met blokscope in de lus
      console.log(i);
    }
    
    // console.log(i); // Fout: i is niet gedefinieerd (als let is gebruikt)
    

Het is ook belangrijk om het concept van scope keten (Scope Chain) te begrijpen. Wanneer JavaScript probeert de waarde van een variabele te vinden, zoekt het eerst in de huidige scope. Als het niet gevonden wordt, gaat het naar de externe (ouder) scope en zo verder, tot de globale scope. Als de variabele ook daar niet gevonden wordt, wordt een ReferenceError gegenereerd.