JS: Funktionen und ihre Rückgabewerte

Wie wir gesehen haben, dienen Funktionen dazu, Programmcode auszulagern, der öfters in einem Programmlauf benutzt oder benötigt wird. Bald werden Sie vor dem Problem stehen, dass eine Funktion auch einen Wert zurückgeben soll. Einfaches Beispiel: Eine Funktion erhält zwei Werte die sie addieren und das Ergebnis zurückliefern soll. Das Schlüsselwort ist „return“.

<script type="text/javascript">

function Berechne(a,b)
{
  return a+b;
}

function start()
{
  alert(Berechne(5,6));
}
</script>

Was passiert in unserem Beispiel? Im Body onload starten wir die Funktion „start“. Diese führt nur einen „alert“ aus. Allerdings mit dem Parameter „Berechne(5,6)“, der innerhalb des Klammerpaares der Alert-Funktion (alert ist also AUCH EINE Funktion) steht. Somit wird die eigene Funktion „Berechne“ ausgeführt. Diese erwartet die Variablen „a“ und „b“ als übergabe, was wir mit den Werten „5“ und „6“ erfüllt haben. In der Funktion finden wir nur ein „return“ gefolgt von der Berechnung „a+b“. Das heisst, die Funktion gibt die Summe dieser Berechnung zurück. Da die Funktion per „alert“ aufgerufen wurde, wird der Funktion „alert“ die Summe übergeben und „alert“ schreibt Ihnen korrekter Weise „11“ auf den Bildschirm.

Sie sind nicht dazu gezwungen, Berechnungen neben dem „return“ durchzuführen. Sie hätten in der Funktion genauso gut Variablen anlegen können, Berechungen durchführen und dann am Ende den Wert der Funktion zurückgeben können.

In der Regeln findet das Schlüsselrot „return“ immer am Ende einer Funktion seinen Platz. Dies muss aber nicht immer so sein. Sie können mit „return“ auch eine Funktion abbrechen. Im folgenden Beispiel haben wir gleich eine Kontrollabfrage eingebaut. Die Funktion soll den Wert der Variable a durch b dividieren. Da Divisionen durch Null nicht erlaubt sind, prüfen wir nun in der Funktion den Wert von „b“. Ist dieser kleiner „1“, brechen wir die Funktion ab. Ansonsten gibt die Funktion die Division zurück.

function Dividiere(a,b)
{
    if (b < 1) return;
      return a/b;
}

Schreibe einen Kommentar