Eine Befehlsfolge kann in einer sogenannten Funktion verpackt werden, welche sich immer wieder verwenden lässt und an unterschiedlichen Stellen im Programm aufgerufen werden kann. Funktionen dienen zum einen dazu, dass sie immer wieder verwendet werden kann, anstatt den gleichen Code mehrfach zu schreiben und zum anderen, macht sie den Code übersichtlicher.
Funktionen definieren und aufrufen
Funktionen werden mit dem Schlüsselwort function definiert und können über ihren Namen aufgerufen werden. Der Name einer Funktion kann nach den gleichen Regeln gewählt werden, wie der Name einer Variablen. Im Unterschied zu Variablen stehen hinter dem Funktionsnamen Klammern. Anschließend an den Funktionsnamen und die runden Klamern stehen in geschweiften Klammern die Befehle der Funktion. Die geschweiften Klammern bilden einen Befehlsblock.
Eine Funktion aufrufen
Wie bereits erwähnt, wird eine Funktion über ihren Namen aufgerufen, jedoch müssen hierfür die runden Klammern mit angegeben werden. Hier ein Beispiel-Code, an dem ich die Funktionsweise von Funktionsaufrufen etwas besser erklären werde:


Im <body> findet der Computer nun den ersten Funktionsaufruf schreibeText(). DerComputer springt an dieser Stelle hoch in die Funktion und führt dort die entsprechenden Befehle aus. Danahc, pringt der Computer wieder an die vorhergehende Stelle zurück und geht zum nächsten Befehl. In dem obigen Code-Beispiel wäre das der zweite Aufruf von schreibeText().
Übergabewerte
Funktionen sind dafür da (bzw. vor allem dafür da), um Übergabewerte zu definieren. Beim Aufruf einer Funktion können so Werte mitgegeben werden, die von der Funktion verarbeitet werden können.
Feste Anzahl von Argumenten
Ein Beispiel für einen Code-Abschnitt, der eine feste Anzahl von Argumenten übergibt:

Diese Funktion nimmt nur ein Argument entgegen (nämlich name). Wenn man z.B. durch ein Eingabefeld eingeben würde, dass man Fred heißt, dann würde die Funktion begruessung() den Namen Fred in der Variablen name speichern und diesen der Variablen text übergeben, welche dann durch den alert-Aufruf ausgegeben wird. Die Ausgabe dieses Abschnittes wäre dann: “ Hallo Fred !“
Es können auch mehrere Argumente an eine Funktion übergeben werden. Die einzelnen Argumente werden durch Komma getrennt. Zum Beispiel:
function add(x, y) {
alert(x + y);
}
Der Funktionsaufruf geschieht dann z.B. mit add(12, 5).
Die Anzahl der Argumente, die beim Funktionsaufruf an eine Funktion übergeben werden, muss meistens immer gleich der Anzahl der von der Funktion erwarteten Argumente sein.
Call by Value
Bei einfachen Datentypen wird nur der Wert der Variablen übergeben und nicht die Variable selbst. Das heißt, der Inhalt der ursprünglichen Variablen bleibt erhalten, auch wenn innerhalb der Funktion der Wert verändert wird. Dies lässt sich am besten an einem Beispiel zeigen:

Vor dem Funktionsaufruf meineFunktion(xyz) hat die Variable xyz den Wert 10. Dieser Wert wird an die Funktion übergeben. Dort wird der übergebene Wert in der Variablen x gespeichert. Der Wert der Variablen x wird innerhalb der Funktion um fünf erhöht. Nachdem die Funktion beendet ist, kehrt der Computer wieder an die vorherige Stelle zurück. Obwohl sich der Wert x innerhalb der Funktion geändert hat, ändert sich nicht der Wert der Variablen xyz, mit der die Funktion aufgerufen wurde. Jedoch ist zu beachten, dass Call by Value bei einfachen Datentypen verwendet wird und im Zusammenhang mit Objekten Call by Reference verwendet wird.
Variable Anzahl von Argumenten
Im Gegensatz zu vielen anderen Programmiersprachen, kann JavaScript mit einer variablen Anzahl von Übergabewerten umgehen. Eine Funktion lässt sich mit mehr Argumenten aufrufen, als die Funktion eigentlich verlangt. Um die einzelnen Argumente auszulesen, verwendet man innerhalb der Funktion folgendes: funktionsName.arguments[index]
Der Funktionsname wird dabei ohne runden Klammern angegeben. Index steht für die Nummer des Übergabewertes, auf den man zugreifen möchte. Die Nummerierung beginnt dabei mit dem Argument, das die Nummer 0 bekommt. Wenn man nun auf den dritten Übergabewert einer Funktion zugreifen möchte, schreibt man: function.arguments[2]
Die Gesamtzahl der Übergabewerte erfährt man mit: function.arguments.length
Rückgabewerte
Funktionen können auch einen Wert zurückliefern, diesen nennt man Rückgabewert. Im Prinzip funktionieren sie wie Übergabewerte, mit dem Unterschied, dass eine Funktion mehrere Übergabewerte entgegennehmen, aber nur einen Rückgabewert haben kann. Hier ein Code-Beispiel:
function quadrieren(x){
var y;
y = x*x;
return y; // mit return wird ein Wert zurückgegeben
}
Im Allgemeinen erzeugt man globale Variablen dadurch, dass man eine Variable außerhalb einer Funktion oder Schleife mit dem Schlüsselwort var definiert.
Wenn man jedoch eine Variable mit var innerhalb einer Funktion definiert, dann erzeugt man eine lokale Variable, die nur innerhalb dieser Funktion Gültigkeit besitzt. Außerhalb der Funktion ist die Variable nicht bekannt. Nach Beendigung der Funktion kann man demnach nicht auf eine lokale Variable zugreifen. Eine Variable ist generell nur in dem Anweisungsblock gültig, in dem sie definiert wurde. Sind in dem Anweisungsblock weitere Anweisungsblöcke definiert, gilt die lokale Variable auch dort.
Der Einfachheit halber wird man jetzt denken, dass es besser ist nur globale Variablen zu benutzen, aber das stimmt nicht, denn das kann schnell unübersichtlich werden. Funktionen sind als separate Einheiten mit nur wenigen Berührungspunkten zu dem restlichen Programm zu sehen. Mit lokalen Variablen lassen sich Funktionen recht eigenständig machen, wodurch die Komplexität reduziert werden kann und auch Außenstehende den Quellcode besser lesen können.
!!! Achtuuuuung: JavaScript ist an dieser Stelle ein bisschen seltsam: Wenn man innerhalb einer Funktion eine Variable deklariert und das var weglässt, wird diese Variable global definiert und nicht lokal.
Vordefinierte Funktionen
zu den vordefinierten Funktionen von JavaScript zählen u.a.:
- parseInt()
- parseFloat()
- eval()
Diese Methoden gehören zum Global-Objekt zählen.
Mit der Funktion parseInt() kann man einen String , der eine Zahl enthält in eine Ganzzahl konvertieren. So gibt x = parseInt („17xyz“); die Zahl 17 zurück. Die Zahl muss dabei links vom String stehen. Wenn in einem String mehrere Zahlen vorkommen, wird nur die Zahl am Anfang des Strings zurückgeliefert. x = parseInt(10.7); liefert den Wert 10 zurück und befreit somit Kommazahlen von Nachkommastellen (jedoch sollte man hierfür eher das Objekt Math verwenden).
parseFloat() liefert eine Kommazahl zurück. Dies ist Zum Beispiel hilfreich, wenn User einen Preis eingeben sollen und dabei noch EURO mit eintippen und dieses vor der Berechnung noch entfernt werden soll.
Die eval()-Funktion interpretiert Java-Script-Code der in einem String enthalten ist.
Anonyme Funktionen
Manchmal ist ein Funktionsname überflüssig, beispielsweise bei Event-Handling. Dort will man nur festlegen, dass ein bestimmter Codeabschnitt ausgeführt wird, wenn ein Ereignis eintritt.
window.onload = function() { alert(„Fertig.“);}
Rekursive Funktionen
sind Funktionen, die sich selbst aufrufen. Um das ein wenig besser darzustellen und zu verstehen, anbei das Code-Beispiel:
