Bei Variablen gibt es eine weitere Komplexitätsstufe. Und das sind die
sogenannten Scopes, also wo eine Variable verfügbar ist. In unserer Boilerplate haben
wir verschiedene Funktionen und deren Inhalte sind von diesen geschweiften
Klammern immer eingefasst. Das ist zum Beispiel ein scope. Wir haben also den globalen scope,
das ist außerhalb dieser Funktion, sozusagen die unterste Ebene in unserem Code und dann,
sobald wir in eine Funktion reingehen, sind wir einen scope weiter unten. Wenn ich jetzt
zum Beispiel eine Variable hier definieren würde. Definieren wir mal die backgroundColor.
Und ich möchte diese jetzt hier unten in der background-Funktion nutzen.
Speicher das Ganze mal ab, dann sehen wir das jetzt hier gar nichts erscheint und wenn ich jetzt
mal in die Konsole schaue, sehe ich, dass er mir hier sagt, das backgroundCcolour nicht definiert
ist. Und dies liegt daran, dass backgroundColor nur innerhalb dieser Funktion verfügbar ist und
deswegen die Funktion hier unten die draw-Funktion nicht darauf zugreifen kann. Es gibt einen ganz
einfachen Trick wie wir so etwas umgehen können. Wir können einfach unsere Variablen
am Anfang auf der globalen Ebene definieren. Also dafür kopiere ich einfach das hier hoch
und lösche die Definition. Hiermit haben jetzt einfach nur die Variable
backgroundColour definiert. Die existiert jetzt auf der globalen Ebene. Und jetzt
können alle die eine ebene weiter, tiefer oder noch tiefer auf diese Variable zugreifen wollen,
diese Variable entsprechend verändern. Also wenn ich dann jetzt hier in setup zum Beispiel sage,
okay, backgroundColor "= 0", dann kann auch "draw" darauf zugreifen. Weil man
kann immer einen scope nach oben oder beliebig viele scopes nach oben gehen,
aber man kann nicht scopes nach unten gehen. Wenn wir uns später komplexere Funktionen wie
die "loops" anschauen werde ich auch noch mal auf diese scopes wieder zurückkommen