Scope - Txai-HvA/BlokTech GitHub Wiki
De scope is een belangrijk concept dat de beschikbaarheid van variabelen beheert (Pavlutin, 2020). Javascript heeft 2 type scopes: Local scope & global scope. JavaScript heeft een functie scope: Elke functie creeert een nieuwe scope. Variabelen gedefineerd in de functie zijn niet zichtbaar buiten de functie (W3schools, 2021).
Local Scope
Variabelen die binnen een JavaScript-functie zijn gedeclareerd, worden local voor de functie en ze zijn alleen zichtbaar binnen de functie. Doordat local variabelen alleen binnen hun functies worden herkend, kunnen variabelen met dezelfde naam in andere functies worden gebruikt (W3schools, 2021).
function myFunction() {
var dogName = "Rex";
}
if (true) {
const message = 'Hello';
}
console.log(message); // ReferenceError: message is not defined
Wanneer je de message variabel probeert te loggen, geeft JavaScript een ReferenceError: message is not defined. Dit komt doordat de if code block een scope creeert voor de message variabel en deze is alleen toegankelijk binnen de scope (Pavlutin, 2020).
Local Scope in mijn app
Global Scope
Een global variabele is een variabele die buiten een functie wordt gedeclareerd en heeft een globaal bereik: alle scripts en functies op de webpagina hebben er toegang toe (W3schools, 2021).
var dogName = "Rex";
function myFunction() {
}
Global Scope in mijn app
Nesting
Scopes kunnen genest worden. De functie run () maakt een scope aan en binnen de if condition codeblok creëert het een andere scope.
function run() {
// "run" function scope
const message = 'Run, Forrest, Run!';
if (true) {
// "if" code block scope
const friend = 'Bubba';
console.log(message); // 'Run, Forrest, Run!'
}
console.log(friend); // throws ReferenceError
}
run();
De scope in een andere scope is de inner scope. In het voorbeeld hierboven is de if code block scope is een inner scope van de run() functie scope. De scope dat om de andere scope heen zit is de outer scope. In het voorbeeld hierboven is de run() function scope is een outer scope van if code block scope (Pavlutin, 2020).
Nesting in mijn app
Bronnen
- JavaScript Scope. (z.d.). W3schools. Geraadpleegd op 7 mei 2021, van https://www.w3schools.com/js/js_scope.asp
- Pavlutin, D. (2020, 24 april). A Simple Explanation of Scope in JavaScript. Dmitri Pavlutin Blog. https://dmitripavlutin.com/javascript-scope/