In snap! wird zwischen globalen und lokalen Variablen unterschieden.

Was ist Gültigkeitsbereich der Variablen?

Der Gültigkeitsbereich ist ein gedankliches Konstrukt: damit wird festgelegt, in welchem Umfang die Variable sichtbar und nutzbar ist. Auf den ersten Blick scheint diese Festlegung eine unnötige Programmierhürde zu sein. Warum nicht alle Variablen global deklarieren? Wenn wir uns aber vorstellen, dass wir auf eine globale Variable zu jedem Zeitpunkt von überall zugreifen können und deren Wert ändern können. Im Falle eines Programmfehlers müssten dann alle Skripte, die auf diese Variable zugreifen, untersucht werden. Die Fehlersuche wird damit zu einer langwierigen und schweren Aufgabe. Bei grö-ßeren Programmen erhöht sich außerdem die Wahrscheinlichkeit für die Nutzung zweier Variablen mit demselben Namen. Die Nutzung von lokalen Variablen führt zur einer hierarchischen Struktur: Daten, die nur innerhalb eines Skriptes von Bedeutung sind, werden in lokalen Variablen abgespeichert und Daten, die für alle Skripte notwendig sind, werden global abgelegt. Die lokalen Variablen sind nur innerhalb des jeweiligen Skriptes sichtbar.
Wichtig!
Alle Datensätze, die sich auf ein Objekt beziehen, werden in die für dieses Objekt erzeugten Variablen (for this sprite only), abgelegt. Dadurch wird die Datenverwaltung vereinfacht und die Daten vor unerlaubten Zugriffen geschützt. Im Kontext der Smart City Simulation kann dies folgend vorgestellt werden: In der Variablen energieGehalt (Speicher) wird der aktuelle Energiestatus des Speichers abgelegt. Diese Variable ist global angelegt, das bedeutet, dass sie auch für andere Objekte wie Solaranlage oder Haus sichtbar ist. Der Wert dieser Variable wird durch den solarErtrag erhöht und durch den verbrauchHaus vermindert. Die Variable verbrauchHaus wird einmal für ein Objekt lokal deklariert. Beim Duplizieren vom Objekt Haus, kann die gleiche lokale Variable verbrauchHaus auch für ein weiteres Haus somit genutzt werden, weil die beiden Skripte nicht miteinander kommunizieren. Somit kann eine lokale Variable für mehrere Objekte fehlerfrei benutzt werden.