Unter den Befehlen innerhalb einer Funktionen dürfen natürlich auch Variablendeklarationen vorkommen. Dabei ist zu beachten, dass eine innerhalb einer Funktion deklarierte Variable nur dort "bekannt" ist. Außerhalb der Funktion wird sie zu undefined ausgewertet. Man spricht deshalb von einer lokalen Variablen.

<script>
function gibMirEine1() {
	var eins = 1;
	return eins;
}
alert(typeof eins);
alert(gibMirEine1());
</script>

Wird eine Variable außerhalb der Funktion deklariert, so kann sie innerhalb der Funktion verwendet und auch verändert werden. Deshalb ist es immer wichtig darauf zu achten, dass man keine Namenskonflikte erzeugt, durch die eine globale Variable ungewollt innerhalb einer Funktion verändert wird.

<script>
var wichtigeZahl = 5;
function gibMirEine1() {
	wichtigeZahl = 1;
	return wichtigeZahl;
}
alert(wichtigeZahl);
gibMirEine1();
alert(wichtigeZahl);
</script>

Hier wird in der Funktion auf die globale Variable wichtigeZahl zugegriffen und ihr Wert wird beim Aufruf der Funktion geändert. Dieses Verhalten kann natürlich auch erwünscht sein. Denn manchmal wollen wir eine Information, die im ganzen Skript verfügbar ist (global), während der Programmausführung an verschiedenen Stellen ändern.

Aufgabe

Prüfe, ob die Zählervariablen, die wir in den for-Schleifen benutzt haben, lokal oder global sind. Kann man also auch außerhalb der Schleife auf sie zugreifen? Wie verhält es sich mit Variablen, die innerhalb der Codeblöcke von Schleifen (auch while-Schleifen) deklariert werden? Ist es sinnvoll, eine Variable innerhalb des Codeblocks einer Schleife zu deklarieren?