JavaScript Function Beispiel 3: Funktionen mit Parametern und Rückgabewert

Im folgenden Beispiel wird eine Funktion definiert, die zwei Parameter erwartet und darüber hinaus einen Rückgabewert liefert. Die Funktion ermittelt den größten gemeinsamen Teiler der beiden übergebenen Zahlen. Es handelt sich dabei um eine rekursive Funktion – die Funktion ruft sich innerhalb des Anweisungsblocks der Funktion selbst auf. Durch das reservierte Wort return wird der Rückgabewert zurückgeliefert.

Das erste Return liefert dabei nicht direkt einen Wert zurück, sondern ruft den nächsten Rekursionsschritt auf (wiederum die Funktion ggt, diesmal allerdings mit anderen Parametern). Dies geschieht solange, bis die letzte Bedingung (val2 > 0) nicht mehr zutrifft. Ist dies der Fall, so wird per return der Wert zurückgeliefert, der in diesem Durchgang in der Variable val1 steht (Bedingt durch das zweite Return in der Funktion). Letztlich wird dieser Wert beim Rücksprung in die jeweils vorherigen Aufrufe „druchgereicht”.

Nach der Funktionsdefinition wird dann durch die Methode document.write des vordefinierten JavaScript-Objekts Document der ermittelte Wert zusammen mit einer enstsprechenden Meldung ausgegeben.

<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Funktion zur Ermittlung des größten gemeinsamen Teilers
// zweier Zahlen.
// Es werden zwei Parameter erwartet, deren ggt ermittelt werden
// soll. Die beiden Parameter müssen ganzzahlige und vorzeichenlose
// Zahlen sein. Achtung! Diese Voraussetzungen werden hier nicht
// geprüft! Dies sollte allerdings im Normalfall immer geschehen.
// Die Funktion gibt als Rückgabewert den ermittelten ggt zurück.
function ggt (val1, val2) {
  var tmp;
  if (val1 < val2) {
    tmp = val1;
    val1 = val2;
    val2 = tmp;
  }
  if (val2 > 0)
    return ggt (val2, val1 % val2);
  else
    return val1;
}

// Aufruf der Funktion und sofortige Ausgabe des gelieferten
// Rückgabewertes.
document.write ('GGT von 350 und 675: ' + ggt (350, 675));
// -->
</script>



¬ Insolvenzrecht