JavaScript Functions Beispiel 4: Funktionsdefinition mit variabler Anzahl von Argumenten

Funktionen können nicht nur mit fixer Anzahl an Variablen definiert werden. Mit Hilfe der Variable arguments, die grundsätzlich in allen JavaScript Funktionen definiert ist, kann auf die einzelnen Parameter der Funktion zugegriffen werden. Arguments speichert die einer Funktion übergebenen Argumente in einem Array. Wie bei Arrays üblich, kann die Anzahl der enthaltenen Parameter mittels der Array-Eigenschaft length ermittelt werden.

Über arguments lässt sich also prüfen, ob und wieviele Parameter beim Aufruf der Funktion angegeben wurden. Dies kann dazu genutzt werden alle angegebenen Parameter auf deren Gültigkeit abzuklopfen. So ist es beispielsweise möglich mit typeof den Datentyp der Parameter zu ermitteln.

Im folgenden Beispiel wird eine Funktion mit verschiedener Parameterzahl aufgerufen. Die Funktion, die ein String liefert, welches die Anzahl der an die Funktion übergebenen Parameter angibt, wird hier nach ihrer Definition zweimal aufgerufen. Das Ergebnis dieser Aufrufe wird – jeweils gefolgt von einem Newline – im aktuellen Dokument ausgegeben.

<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Folgende Funktion liefert eine Zeichenkette, welche die Anzahl der
// an die Funktion übergebenen Parameter enthält
function parameter () {
  // Anzahl der Argumente durch Abfrage der Größe des Arrays
  // arguments ermitteln und in der Variablen argc speichern.
  var argc = arguments.length;
  return 'Funktion wurde mit ' + argc + ' Parametern aufgerufen!';
}

// Funktion mit unterschiedlichen Parametern aufrufen und die
// per Return gelieferte Zeichenkette ausgeben
document.write (parameter () + '<br>');
document.write (parameter ('erster', 'zweiter') + '<br>');
// -->
</script>

Als nächstes wird eine Funktion implementiert, deren Aufgabe es ist, die ihr übergebenen Werte zu summieren. Aus dem Funktionskopf geht hervor, dass die Funktion keine Parameter erwartet. Sie arbeitet ausschließlich mit der Varaible arguments, über die auf gegebenenfalls in einem Funktionsaufruf angegebenen Parameter zugegriffen wird. Nach der Initialisierung des Rückgabewertes sum wird mittels For-Anweisung über die angegebenen Argumente iteriert. Handelt es sich beim jeweils betrachteten Argument um eine Zahl (die Abfrage, ob dies der Fall ist erfolgt durch das If-Statement), so wird diese zur Summenvariable sum addiert.

Weiter unten im Code folgen einige Aufrufe der Summenfunktion. Der erste Aufruf summiert die Zahlen eins bis zehn und speichert das Ergebnis in der Variable wert1. Jedem Funktionsaufruf folgt eine Ausgabe der jeweiligen Ergebnisvariablen, was mittels der Document-Methode write erledigt wird. Beachten Sie, dass auch Zahlen, die als Zeichenkette angegeben werden als solche erkannt werden und entsprechend addiert werden – diese werden durch isNaN als Zahl erkannt und die Funktion Number erledigt die Konvertierung in eine Zahl, damit eine Zahl nicht einfach Zeichenkette angehängt wird. Zeichenketten, die nicht ausschließlich aus einem als String gespeicherten einzigen Zahlenwert bestehen, werden durch die Funktion ignoriert.

<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Funktion berechnet die Summe der ihr übergebenen Werte
function summe () {
  // Summe initialisieren
  var sum = 0;

  // Jedes Argument einzeln verarbeiten
  for (i = 0; i < arguments.length; i++)
    // Enthält der angegebene Parameter eine Zahl?
    // Auch wenn eine Zahl als String übergeben wurde
    // trifft diese Bedingung zu!
    if (!isNaN (arguments[i]))
      // Summe um den im Paramter angegebenen
      // Wert erhöhen. Sicherheitshalber führt
      // der Aufruf von Number eine Konvertierung
      // durch.
      sum += Number (arguments[i]);
  // Berechnete Summe mit Return zurückliefern
  return sum;
}

// Funktion mit zehn Parametern aufrufen
wert1 = summe (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
document.write ('Summe: ' + wert1 + '<br>');
// Auch die Angabe von Strings ist möglich, da diese
// automatisch konvertiert werden
wert2 = summe (wert1, '5');
document.write ('Summe: ' + wert2 + '<br>');
// Auch im folgenden Aufruf werden nur die Zahlen addiert
wert3 = summe ('5', 'Hund', 5, 'Katze', '5', 'Maus');
document.write ('Summe: ' + wert3 + '<br>');
// -->
</script>



¬ Insolvenzrecht