6. JavaScript - Funktionen

6.1. Definition
6.2. Aufruf
6.3. vordefinierte Funktionen

6.1. Definition

Durch den Gebrauch von Funktionen läßt sich Programmcode zu Einheiten zusammenfassen und beliebig oft verwenden. Anders als ungekapselter Code wird eine Funktion nicht unbedingt sofort bei oder nach dem Laden einer HTML-Datei ausgeführt. Der in einer Funktion enthaltene Code wird nur an den Stellen ausgeführt, an denen die jeweilige Funktion aufgerufen wird.

Bei Funktionen handelt es sich im Prinzip um Blöcke mit Namen. Sie können allerdings Variablen oder Werte übergeben bekommen und einen Wert zurückgeben.

Funktionsdefinitionen werden mit dem reservierten Wort function eingeleitet. Die Syntax lautet function Funktionsname(Parameter1, Parameter2, ...) {Funktionsblock}.
Es müssen nicht unbedingt Parameter übergeben werden, in diesem Fall vereinfacht sich das Ganze zu function Funktionsname() {Funktionsblock}.

Durch das reservierte Wort return hat man die Möglichkeit, einen Wert zurückzugeben. Genauer gesagt bricht return die Bearbeitung einer Funktion sofort ab. Man kann mehrere solcher Abbruchpunkte definieren.
function sqr(x)
{
  var y=x*x;
  return y;
}

function cub(x)
{
  var y=x*x*x;
  return y;
}

function pot(x,y)
{
  var i,z=1;
  for (i=1;i<=y;i++)
    z*=x;
  return z;
}

In diesem Beispiel werden drei Funktionen definiert. Die mit dem Namen sqr gibt das Quadrat des einzigen Parameters zurück, die mit dem Namen cub die dritte Potenz. Die Function pot ermittelt die y-te Potenz von x und gibt diesen Wert zurück. Beachtenswert ist die Tatsache, daß die lokal definierten Variablen (y innerhalb von sqr und cub, i und z innerhalb von pot) auch nur innerhalb dieser Funktionen definiert sind. Eventuell global definierte Variablen gleichen Namens werden sowohl durch diese lokalen Variablen als auch durch die Namen der Parameter (x innerhalb von sqr und cub, x und y innerhalb von pot) verdeckt. Ansonsten sind alle global definierten Variablen auch innerhalb der Funktionen verfügbar.

Soll eine Funktion keinen Wert zurückgeben, erspare man sich einfach die return-Zeile. Möchte man eine Funktion unter bestimmten Bedingungen ohne Rückgabewert vor dem eigentlichen Funktionsende abbrechen, notiere man return; ohne Parameter.

Als Reaktion auf bestimmete Ereignisse lassen sich Funktionen im Header definieren und dann innerhalb von HTML-tags aufrufen.

6.2. Aufruf

Die Syntax für Funktionen mit Parametern lautet Funktionsname(Parameter1, Parameter2, ...), für solche ohne Parameter Funktionsname().
Einige Beispielaufrufe für die im vorigen Abschnitt definierten Funktionen:
a=sqr(4);
b=cub(6);
c=pot(a,b);
d=pot(cub(3.7),4);

Die Variable a wird auf 42 gesetzt, b auf 63, c auf ab und d wird auf das Ergebnis des mathematischen Ausdruckes ((3.73)4) gesetzt.

6.3. vordefinierte Funktionen

Die meisten vordefinierten Funktionen gehören zu Objekten, es gibt jedoch auch einige Funktionen, die zu keinem vorhandenen Objekt so richtig passen.

vordefinierte objektunabhängige Funktionen
NameBedeutung
eval(Zeichenkette) Ein "Interpreter im Interpreter", hauptsächlich für Berechnungen
Interpretiert die Zeichenkette als JavaScript-Befehlsfolge und gibt ein eventuelles Ergebnis zurück
parseFloat(Zeichenkette) Zeichenkette wird in eine Gleitkommazahl umgerechnet und das Ergebnis zurückgegeben
Läßt sich der übergebene Wert nicht in eine Zahl umwandeln, liefert die Funktion NaN (not a number)
parseInt(Zeichenkette) Zeichenkette wird in eine ganze Zahl umgerechnet und das Ergebnis zurückgegeben
Läßt sich der übergebene Wert nicht in eine Zahl umwandeln, liefert die Funktion NaN (not a number)
isNaN(Ausdruck) Überprüft, ob ein Wert eine Zahl ist oder nicht
Ist der Wert keine Zahl, liefert die Funktion true, sonst false
isFinite(Ausdruck) Überprüft, ob ein Wert eine finite Zahl ist oder nicht
Ist der Wert eine finite Zahl, liefert die Funktion true, sonst false
Number(Ausdruck) Erzeugt aus einem beliebigen Ausdruck eine Zahl und gibt diese zurück
Läßt sich der übergebene Ausdruck nicht in eine Zahl umwandeln, liefert die Funktion NaN (not a number)
String(Ausdruck) Erzeugt aus einen beliebigen Ausdruck eine Zeichenkette und gibt diese zurück
escape(Zeichenkette) Wandelt alle Steuerzeichen (0 bis 31) einer Zeichenkette in von %-Zeichen angeführte zweistellige Ziffernfolgen (%00 bis %31) um und gibt das Ergebnis zurück.
unescape(Zeichenkette) Wandelt alle von %-Zeichen angeführten zweistelligen Ziffernfolgen in Zeichen oder Steuerzeichen um und gibt das Ergebnis zurück.


Eine Demonstration der eval-Funktion:
String:

Result:
Vorsicht! Die eval-Funktion versteht auch Anweisungen wie beispielsweise history.back() (vorhergehende Seite aufrufen) oder window.close() (Fenster schließen) oder window.alert("irgendwas") (Meldung ausgeben).

Autor: Ulrich Kritzner