Ergänzungen zu Argumenten in JavaScript
Aussprache eines Aufrufausdrucks
Die runde Klammer auf »(« wird im Deutschen (in der Mathematik) bei Verwendung der Funktionsschreibweise meist als „von“ gesprochen. So ist »this.Math.abs( -3 )« „abs von Minus Drei“ oder „Der Betrag von Minus Drei“ (Man kann den langen Namen »this.Math.abs« beim Aussprechen ruhig mit „abs“ oder etwas Ähnlichen abkürzen, solange dadurch keine Mißverständnisse zu befürchten sind). Den Ausdruck »cos( 0 )« kann man beispielsweise als „Kosinus von Null“ aussprechen. Ausführlicher nennt man »cos( 0 )« „der Aufruf der Funktion »cos« mit dem Argument(wert) »0«“.
Der Betrag einer Zahl ist der Abstand der Zahl von 0. Der Betrag von ‹ −3 › ist daher gleich ‹ 3 ›.
Man kann sich den Aufruf »this.Math.abs( -3 )« auch als Frage veranschaulichen: „Was ist der Betrag von »-3«?“ – er antwortet dann mit »3«.
Semantik eines Argumentwertes
Die Bedeutung eines bestimmten Argumentwertes für die Auswertung des Aufrufausdrucks wird durch die aufgerufene Funktion beziehungsweise ihre Dokumentation jeweils individuell festgelegt.
Erklärung zur Bedeutung von Ausdrücken *
Wir hatten Ausdrücke bereits als Quelltexte kennengelernt, welche man in die Konsole eingeben kann, wo sie dann ausgewertet werden. Danach konnten wir Ausdrücke auch als das charakterisieren, was man als Operand eines Operators schreiben kann. Nun können wir Ausdrücke auch noch dadurch charakterisieren, daß sie als Argumente in Aufrufausdrücken verwendet werden können. Wenn man Argumente aber auch als eine Art von Operanden ansieht, dann ist es nicht nötig, sie ausdrücklich zu erwähnen, und wir können dann weiterhin einfach sagen: „Ein Ausdruck ist etwas, das in den Ausdruckrahmen eingesetzt werden oder als Operand verwendet werden kann.“
Deterministische Funktionen *
Eine Funktion, welche man mit einem Argument aufrufen kann, und welche einen Wert als Ergebnis liefert, der durch diese Funktion und einen eventuellen Argumentwert bestimmt ist, nennt man auch eine deterministische Funktion.
»this.Math.abs« ist ein Beispiel für eine deterministische Funktion, weil sich bei gleichem Aufruf auch der gleicher Wert ergibt, während die Funktionen »this.Math.random« nicht deterministisch ist, da sie auch bei gleicher Schreibweise des Aufrufs unterschiedliche Werte liefern kann.
Deterministische Funktionen, die mit einem Argument aufgerufen werden, ähneln den Funktionen (Abbildungen) der Mathematik, während nicht-deterministische Funktion in der Schulmathematik keine Entsprechung haben.
Übergabe des Argumentwerts **
Man kann sich den Sinn eines Arguments auch so erklären: Die Funktion »this.Math.abs« benötigt noch Informationen, um ihre Arbeit tun zu können, und diese Informationen werden durch den Wert des Arguments geliefert. Das Argument enthält die Information, welche die Funktion verarbeiten soll.
Da beim Aufruf einer Funktion der Wert des Argumentausdrucks zur Laufzeit zusammen mit der Kontrolle (über den Computer) an die aufgerufene Funktion übergeben wird, spricht man auch von der Übergabe des Argumentwertes oder sagt, der Argumentwert werde an die aufgerufene Funktion übergeben.
- Konsole und »this.Math.abs«
Konsole
|
|
| Übergabe der Kontrolle
| und des Wertes -3
'------------------.
|
V
.---------------.
| this.Math.abs |
'---------------'
|
|
.<-----------------'
| Rueckgabe der Kontrolle
| und des Wertes 3
|
vKonsole
Das folgende Diagramm stellt dieselbe Situation mit etwas allgemeineren Begriffen vor.
- Übergabe und Rückgabe der Kontrolle zur Laufzeit
Konsole
|
|
| Übergabe der Kontrolle
| und des Argumentwertes
'------------------.
|
V
.---------------.
| Unterprogramm |
'---------------'
|
|
.<-----------------'
| Rueckgabe der Kontrolle
| und des Ergebniswertes
|
vKonsole
Ein- und Ausgabe bei Funktionen **
Man kann eine Funktion wie »this.Math.abs« auch mit einer Backmaschine vergleichen, bei der man – vereinfacht gesagt – Mehl hinein gibt und Brot heraus bekommt: bei »this.Math.abs« gibt man eine Zahl hinein und bekommt die Zahl ohne negatives Vorzeichen heraus.
Insofern kann man eine Funktion wie ein Maschine sehen, in die eine Information eingegeben werden kann, und die dann eine andere Information dazu ausgibt. Gibt man in »this.Math.abs« beispielsweise die Zahl »-3«, so kommt als Ausgabe die Zahl »3« heraus.
- »this.Math.abs« als Maschine mit einer Eingabe und einer Ausgabe
"Eingabe" "Ausgabe" (nur vergleichsweise Bezeichnungen)
.---------------.
- 3 ---> | this.Math.abs |---> 3
'---------------'Übergabe Rückgabe (korrekte Bezeichnungen)
Freilich spricht man aber in diesem Fall normalerweise nicht von „eingeben“ sondern von „übergeben“ und auch nicht von „ausgeben“, sondern von „zurückgeben“.
Auch wenn in diesem Abschnitt zu Lehrzwecken einmal von der „Eingabe“ und der „Ausgabe“ bei einer Funktion gesprochen wurde, sollte man dafür normalerweise von der „Übergabe eines Argumentwertes an eine Funktion“ und der „Rückgabe eines Ergebniswertes durch eine Funktion“ sprechen.
Operanden und Argumente ***
Man kann den Funktionsausdruck und Argumentausdruck auch als eine Operanden des Aufrufs ansehen und die Klammern als binären Aufrufoperator. Diese Sichtweise ist aber unüblich. Trotzdem gilt alles, was wir hier über Operanden sagen im Regelfall auch für Funktionsausdrücke und Argumente in einem Aufruf. Daher ist es im allgemeinen eine Vereinfachung, wenn man ein Argument als eine Art von Operand ansieht, damit man nicht immer von „Operanden und Argumenten “ sprechen muß.
- Ein Aufrufausdruck zerlegt in Operator und Operand
zweiter Operand (gleich "-3")
|
|
erster Operand |
| |
v vthis.Math.abs( -3 )
^ ^
'---'
|
Operator