Globale vs lokale Variablen
Es gibt globale und lokale Variablen. Kurz zusammengefasst, globale Variablen sind die Variablen die man außerhalb von Funktionen anlegt und lokale Variablen sind diejenigen die man innerhalb von Funktionen anlegt.
Für eine detailliertere Erklärung füge ich hier den Text zu Sichtbarkeit von Variablen von Wikipedia ein:
Sichtbarkeitsbereich von Variablen (Scope)
Unter dem Sichtbarkeitsbereich einer Variablen versteht man den Programmabschnitt, in dem die Variable nutzbar und sichtbar ist. Da eine lokale Variable in den meisten Programmiersprachen den gleichen Namen tragen darf wie eine globale Variable, sind Sichtbarkeitsbereiche nicht notwendig zusammenhängend: durch die Deklaration einer lokalen Variable wird die gleichnamige globale Variable für einen bestimmten Block ?verschattet?, das heißt, sie ist temporär nicht sichtbar.
Die Sichtbarkeitsregeln können auf zwei unterschiedliche (sich gegenseitig ausschließende) Arten festgelegt werden; dabei ist das Konzept der Bindung wichtig. Bindung bedeutet hier die Zuordnung eines bestimmten Namens zu der damit verbundenen Variablen.
- Lexikalisch (oder statisch), das heißt, der umgebende Programmtext (die Definition) bestimmt die Bindung
- Dynamisch, das heißt, die Ausführungsgeschichte zur Laufzeit des Programms bestimmt die Bindung.
Im Fall einer lexikalischen Bindung sind die Bindungen für einen ganzen Block immer die gleichen, weil sie allein durch die Blockstruktur vorgegeben sind. Man kann daher allein durch Analyse des Programmtextes einer Funktion verstehen, wie sich die Funktion verhält. Dieses Konzept unterstützt daher modulares Programmieren.
Bei dynamischen Bindungsregeln können zur Laufzeit immer neue Bindungen eingeführt werden; diese gelten dann so lange, bis sie explizit aufgehoben werden oder durch eine neue dynamische Bindung verschattet werden. Man kann daher durch Analyse des Programmtextes einer Funktion nicht notwendigerweise verstehen, wie sich diese verhält. Selbst die Analyse des gesamten Programmtextes eines Programms hilft nicht. Es lässt sich statisch nicht verstehen, wie sich die Funktion verhält. Ihr Verhalten hängt von den jeweiligen (direkt und indirekt) aufrufenden Funktionen ab. Dies widerspricht dem Konzept des modularen Programmierens.
Die meisten modernen Programmiersprachen unterstützen nur lexikalische Bindung, z. B. C++, C, ML, Haskell, Python, Pascal. Einige wenige unterstützen nur dynamische Bindung (z. B. Emacs Lisp, Logo) und einige (z. B. Perl und Common Lisp) erlauben dem Programmierer für jede lokale Variable festzulegen, ob sie nach lexikalischen (statischen) oder dynamischen Regeln gebunden sein soll.
[image img_id=”6342″ alt=”Verschiedene Gültigkeitsbereiche von Variablen”]
Wenn wir nun also eine Variable innerhalb einer Funktion erstellen, können wir diese nicht in einer anderen Funktion verwenden.
Beispiel für Globale und Lokale Variablen in Javascript
<script type="text/javascript">
var globaleV = 10;
function lokaleFunktion(){
var lokaleV = 5;
document.write(lokaleV);
}
function neandereFunktion(){
document.write(globaleV);
/*
die folgende Zeile wird nichts ausgeben,
da diese Funktion die Variable lokaleV nicht kennt
*/
document.write(lokaleV);
}
lokaleFunktion();
neandereFunktion();
</script>
Man darf also nicht vergessen, dass lokale Variablen nicht einfach so in anderen Funktionen verwendet werden können (jetzt hab ich’s 3 Mal gesagt 😀 ). Eine lokale Variable kann sogar den selben Namen haben wie die Globale, dann wird jedoch die globale Variable ignoriert und nur die Lokale behandelt. Um nun dennoch auf die globale Variable zugreifen zu können, kann man den window Begriff verwenden. Also window.variablenname. Ich gehe hier lieber nicht in der Tiefe darauf ein, weil es in Javascript absolut nicht empfohlen ist, den selben namen für eine lokale Variable zu verwenden, wenn es dazu eine Globale gibt. Solltest du es dennoch mal machen, kannst du dich gerne daran erinnern, dass es da diese window Möglichkeit gab.