Front end: Scope - lottekoblens/matching-application GitHub Wiki

Scope

In JavaScript heb je te maken met scopes: de globale en de lokale scope.

Global scope houdt in dat variabelen overal te gebruiken zijn, omdat ze buiten een functie of method gedeclareerd zijn. Meestal worden globale variabelen aan het begin van het document declareerd.

let dog = “goodBoy”;
console.log(“1st log”, dog);

function showScopeExample(){
let dog = “badDog”;
}



showScopeExample();



console.log(‘2nd log’, dog);

Als dit stukje code wordt uitgevoerd krijg je het volgende in de terminal:

  • 1st log goodBoy
  • 2nd log goodBoy

Wat je hieraan ziet is dat er twee keer goodBoy wordt gelogd. Dit komt doordat beide console.logs in de global scope staan, deze logs pakken dus de waarde van de variabele dog die ook in de global scope is gedeclareerd. En dus niet de variabele dog die in de functie wordt gedeclareerd. De variabele dog in de functie heeft namelijk de local scope. Wanneer we het volgende stukje code uitvoeren zal er een ander resultaat komen in de terminal:

let dog = “goodBoy”;
console.log(“1st log”, dog);

function showScopeExample(){
let dog = “badDog”;
	
console.log(‘2nd log’, dog);
}



showScopeExample();



console.log(‘3rd log’, dog);

Nu zal het volgende in de terminal komen:

  • 1st log goodBoy
  • 2nd log badDog
  • 3rd log goodBoy

De variabele die in de functie staat, wordt nu ook in de functie aangeroepen met de console.log. Daarom zie je dat de tweede log badDog geeft. Als je dus een variabele wilt gebruiken die in een functie gedeclareerd is, dan moet je hem ook in de functie aanroepen anders kan je hem niet gebruiken. De variabele in de functie heeft dus een local scope.

Oftewel als je een variabele overal wilt kunnen gebruiken, dan moet je hem in de global scope declareren (dus niet in een functie). Wanneer je een variabele juist alleen in een functie wilt gebruiken, maak je dus gebruik van de local scope en zal de variabele die gedeclareerd is in de functie alleen in die specifieke functie gebruikt kunnen worden.

Bronnen: