U5 LA2 Globale Variabelen opheffen

Ik ben echt de slechtste Informatica-docent van Nederland: ik heb jullie geleerd lekker veel globale variabelen te gebruiken. Onze (ja de mijne ook) coding style is echt amateur.

Wat is een globale variabele?

De eerste 10 regels van een voorbeeld dat ik gaf voor Light Switch Game

// 6 schakelaars
// elk op false zetten

let switch1; // 6x

// 6 lampen
let lamp1; // 6x

function setup() {
  createCanvas(400, 400);
}

Een globale variabele is een variabele die in je hele p5js sketch zichtbaar is. In Scope heet het in goed Engels. De scope van een variabele is de plekken waar die zichtbaar is. De scope hangt af van de plaats waar je de variabele definieert:

  • Als je binnen een functie een variabele of constante declareert is de variabele alleen binnen deze functie geldig. Dit noemen we function scope.
  • Als je binnen een paar { } accolades een variabele of constante declareert is deze alleen geldig binnen dit blok accolades. We noemen dit block scope.
  • Als je een variabele of constante “bovenaan” je code, buiten setup() en draw() definieert is deze globaal.
    • let deVariabele; // bestaat vanaf het moment van declareren
    • var deVariabele // bestaat vanaf het de start van het programma, al voordat de code ‘hier’ is.

Wat is er mis met globale variabelen?

Kijk de video: What is Wrong with Global Variables in JavaScript?

  • Een functie verderop in je programma kan gewoon een variabele veranderen waardoor je een onoplosbare bug gemaakt hebt.
  • Je kunt dezelfde variabele naam meerdere keren gebruiken. In de andere context wordt de ene variabele gemaskeerd als je er nog een definieert met var of let. Dit heet variable masking. De meeste leerlingen zullen dit eerder per ongeluk doen dan expres.

Gebruik globale variabelen met beleid: als je ze echt nodig hebt.
Maak een variabele in een functie of block indien mogelijk. Gebruik unieke namen

eloquent architect

Hoe los ik dit op?

Het is makkelijker om gelijk goed te beginnen dan om een bestaande code te herzien. Dus wat krijg je van me: een aantal mislukte codes en jij mag t even uitzoeken. Da’s leuk!

Three Techniques for Avoiding Global Variables in JavaScript