![]() | ![]() ![]() ![]() ![]() ![]() |
Die function "summe" verarbeitet eine variable Anzahl von Eingabeargumenten.
Anders als bei der Definition von "fakult", wo als Übergabeargument
eine Variable "kk" angegebene wurde, ist bei der Definition von "summe" kein
Argument definiert. Statt dessen wird auf das Array arguments[]
zugegriffen, das alle Eingabeargumente enthält.
Funktionen sind eine nützliches Hilfsmittel, wenn bestimmte Aufgaben
innerhalb eines Skripts wiederholt ausgeführt werden müssen.
Bevor eine function aufgerufen wird, muß sie definiert werden.
Der allgemeine Aufbau einer solchen Definition ist :
function name(argument1, argument2, ...) {
Das Schlüsselwort function wird gefolgt vom Namen der Funktion;
für den Namen einer Funktion gelten die gleichen Einschränkungen
wie für Variablennamen (siehe Seite 04).
Anschließend wird eine Liste der Eingabeargumente - eingeschlossen
in runden Klammern und getrennt durch Komma - angegeben. Die Liste darf
auch aus nur einem oder keinem Argument bestehen, die runden Klammern sind jedoch
in jedem Fall erforderlich. Für argument wird jeweils ein
Variablenname als Platzhalter für den übergebenen Wert angegeben.
Der Anweisungsblock (also eine Folge von JavaScript-Anweisungen,
die die eigentliche Arbeit tun) wird von geschweiften Klammern umfaßt.
Eingabeargumente werden an Funktionen "by value" übergeben, d.h. es wird
der Wert, und nicht die Variable selber übergeben. Hierzu ein kleines
Beispiel:
Bei der Verwendung von Funktionen ist besonderes Augenmerk auf den
Gültigkeitsbereich von Variablen zu richten; hierauf wurde bereits
auf Seite 04 hingewiesen. Hierzu zwei fast
identische Beispiele :
Beschreibung
Die mathematische Funktion Fakultät ist ein Beispiel für eine
rekursive Funktion, d.h. für eine Funktion, die sich selber wieder
aufruft.
Außerdem wird eine Funktion beschrieben, die die Summe aus einer
beliebigen Anzahl von Eingabeargumenten berechnet.
Quelltext
<head>
<script language="JavaScript">
<!--
function fakult(kk) {
if(kk > 1) {
return kk*fakult(kk-1);
} else {
return 1;
}
}
function summe() {
var sum=0;
for(var ii=0; ii<summe.arguments.length; ii++) {
sum+=summe.arguments[ii];
}
return sum;
}
//-->
</script>
</head>
</body>
<script language="JavaScript">
<!--
document.write("1+2+3+4+5 = ");
document.write(summe(1,2,3,4,5));
document.write("<br>1*2*3*4*5 = ");
document.write(fakult(5));
document.write("<br>die Chance auf einen 6er im Lotto ist 1 : ");
document.write(fakult(49)/(fakult(6)*fakult(43)));
//-->
</script>
</body>
Erläuterung
Die mathematische Schreibweise für die Fakultät einer positiven
ganzen Zahl n ist "n!" und wird berechnet zu
"n! = 1 * 2 * 3 * ... * (n-1) * n". Damit gilt
"n! = n * (n-1)!", wenn n größer als
1 ist. Diese rekursive Definition wurde im vorliegenden Beispiel in der
function "fakult" umgesetzt.
Mit JavaScript erstellte Funktionen beschränken sich nicht, wie in den
beiden vorgestellten Beispielen, nur auf mathematische Funktionen.
Übungsaufgabe
Erstellen Sie eine Funktion, die aus einer beliebigen Anzahl von Eingabeargumenten
den größten Wert ermittelt; dabei sollen negative Zahlen vorher
in positive Zahlen umgewandelt werden.
Lösung
Referenz
[function]
[return]
[arguments-array]
function
Außerdem werden sie eingesetzt, um umfangreichere
Aufgaben zu strukturieren: diese werden mit Funktionen in kleine, überschaubare
"Häppchen" unterteilt.
Anweisungsblock;
}
function increment(kk) {
kk=kk+1;
}
var ii=1;
increment(ii);
alert(ii);
Es wird der Wert der Variablen "ii" (also "1") an die Variable "kk"
in der function "increment" übergeben. In der Funktion wird der
Wert von "kk" erhöht und beträgt danach "2". Nach Verlassen von
"increment" hat die Variable "ii" unverändert den Wert "1".
function add(a1, a2) { kk=a1+a2; return kk; } ii=1; kk=2; summ=add(ii, kk); alert(kk); | function add(a1, a2) { var kk=a1+a2; return kk; } ii=1; kk=2; summ=add(ii, kk); alert(kk); |
Bei rekursiven Programmaufrufen wird den lokalen Variablen bei jedem Aufruf ein eigener (neuer) Speicherbereich zugewiesen.
function-Definitionen werden üblicherweise im <head>-Bereich
eines Dokuments abgelegt.
Dies erleichtert die Übersicht und es ist sichergestellt, daß eine
Funktion bei ihrer ersten Verwendung auch definiert ist.
Der Aufruf einer Funktion erfolgt durch Angabe des Funktionsnamens und der Übergabeargumente in runden Klammern entweder als einzelne Anweisung oder anstelle einer Variablen in einer Wertzuweisung oder einer Bedingung. Auch wenn keine Übergabeargumente erforderlich sind, sind die runden Klammern anzugeben !
Auf der nächsten Seite bauen wie einen Taschenrechner. |
![]() ![]() ![]() |