Wenn Variablen in einem Programm verwendet werden, dann ist es entscheidend zu wissen, wo sie wann gelten.
Der blaue Kübel enthält immer 5 Stück einer Obstsorte und der rote Kübel immer 1 Stück einer Obstsorte. Das geht, solange gut, solange auf dem Platz keine anderen roten und blauen Kübel herumstehen!! Sobald das der Fall wird, muss man wissen zu wem die Kübel gehören! Nur so kann ich feststellen, wer sich an diese Vereinbarung hält! Außerdem dürfen die Kübel untereinander nicht vertauscht werden!
Sowas passiert, wenn Variablen mit gleichen Namen vorkommen!
Variablen, die während der gesamten Laufzeit eines Programmes immer zur Verfügung stehen, nennt man globale oder öffentliche Variablen
Diese werden zu Anfang mit var oder mitten im Code nur unter erstmaliger Festlegung des Namens deklariert und stehen während der gesamten Dauer zur Verfügung. Um Kollisionen zu vermeiden, möglichst nicht verwenden!
In Javascript können auch externe nachgeladene Programmdateien Variable enthalten! Das kann zu unerwünschten Effekten führen!
Daher ist eine Variable erst nur dort zu verwenden, wo diese gebraucht wird!
Variable, die nur innerhalb von definierten Bereichen gelten, nennt man privat.
Sind beispielsweise innerhalb einer Funktion die Variablen nur privat gültig, dann kann eine andere Funktion die gleichen Variablennamen verwenden. Solche Variablen werden in JavaScript mit var innerhalb der Deklaration einer Funktion hervorgezaubert.
Diese Variablen haben nur innerhalb dieser Funktion eine Gültigkeit.
Mit let deklarierte Variablen gelten in JavaScript nur innerhalb des Blockes { }, Ein Block besteht zwischen den geschwungenen Klammern.. Der äußerste Block ist durch die <script>-Tags vorgegeben. Hier definierte Variablen wirken global (oder auch öffentliche) innerhalb des Scriptes. Die weiteren Blöcke werden durch die Klammern { } definiert.
Um diese Regel streng zu handhaben, damit der Fehler im Programm nicht unbemerkt weiterläuft wird innerhalb einer Funktion an oberster Stelle die Anweisung "use strict"; geschrieben.
Es bestehen laut untenstehender Grafik folgende möglichen Geltungsbereiche einer Variablen:
Geltungsbereiche können verschachteln!!! Durch Funktion in einer Funktion in einer Funktion!
var breite; legt eine Variable mit der Namen breite an. Wird innerhalbe der Funktion fragen der Wert der Variablen breite gesetzt, entsteht ein closure! Die innere Funktion fragen greift auf die sie umgebende Variasble breite zu - und hält sie auch!! Dadurch kann eine andere innere Funktion auf die selbe Weise zugreifen. Die Variable kann also gemeinsam von diesen inneren Funktionen verwendet werden.
vorname; Wird auf var verzichtet ist die Variable immer überall gültig, obwohl sie innerhalb einer Funktion deklariert wurde
farbe - var hoehe - var breite - var gewicht; Variablen, die innerhalb einer Funktion mit var definiert werden gelten, nur während deren Dauer.
Wie globale Variablen wirken daher:
geschlecht, vorname
//Variable im gesamten Script gültig var a = 4; alert("Startwert: " + a);function a_ist_7() { //Variable nur innerhalb der Funktion gültig "use strict"; var a = 7; alert("nur in einer Funktion a: " + a); }function a_wird_8() { //Variable nur innerhalb der Funktion gültig "use strict"; var a = 8; alert("nur in einer anderen Funktion a: " + a); }function a_ausgeben() { //Welchen Wert hat die Variable "use strict"; alert("Jetziger Wert von a im script nach Anderungen: " + a); }function b_ausgeben(a) { //saubere Übergabe "use strict"; var b; b = a; alert("Wert von a in b: " + b); }/* Jetzt erzeugen wir eine globale Variable innerhalb der Funktion! +/ function c_ohne_var(){ d="global"; }alert("Aufruf script(2) a: " + a); a_ist_7(); a_wird_8(); a_ausgeben(); b_ausgeben(a); c_ohne_var(); alert("Aufruf script(3) a: " + a); alert("Aufruf script(4) d: " + d);
Wenn Werte aus einem bestehenden Html Dokument ausgelesen werden, dann kann dies erst nachdem die Seite vollständig geladen wurde geschehen. Eine Möglichkeit besteht durch aufteilen des Scriptes im Head und vor dem Ende des Body.
<head> <script> function start() { alert("Startwert von a: " + a); } </script> </head> <body> <div id="inhalt">Ein beliebiger Text</div> <input type="button" value="test" onclick="start()"> <script> //Variable im gesamten Script gültig var a = document.querySelector("div").innerHTML; </script> </body></html>