Variable Argumentanzahl in JavaScript
Für einige Funktionen ist die Anzahl der Argumente, mit denen sie aufgerufen werden müssen, nicht festgelegt.
Dazu gehören beispielsweise die Funktionen »this.Math.max« und »this.Math.hypot«.
Zwar sind »this.Math.max.length« und »this.Math.hypot.length« beide jeweils gleich »2«, doch gibt dieser Wert eher eine natürliche oder typische Anzahl von Argumenten an. Tatsächlich können diese Funktion mit einer beliebigen Anzahl an Argumenten aufgerufen werden.
- Auswertung
this.Math.max.length
2
- Auswertung
this.Math.hypot.length
2
Die Funktion »this.Math.max«
Die Funktion »this.Math.max« findet das Maximum der Argumentwerte, also den Größten der angegebenen Werte. Bei den beiden Werten »1« und »0« ist dies beispielsweise der Wert »1«, denn »1« ist nicht kleiner als ein beliebiger Argumentwert (hier: nicht kleiner als »1« und nicht kleiner als »0«).
- Auswertung
this.Math.max( 1, 0 )
1
Aus demselben Grund ist »this.Math.max( 1, 1 )« gleich »1«.
- Auswertung
this.Math.max( 1, 1 )
1
Die Funktion »this.Math.hypot«
Die Funktion »this.Math.hypot« berechnet die Quadratwurzel aus der Summe der Quadrate der Argumentwerte. Bei den beiden Werten »1« und »0« ist dies beispielsweise der Wert »1«, denn ‹ √( 1² + 0² ) = 1 ›.
- Auswertung
this.Math.hypot( 1, 0 )
1
Der Aufruf mit »undefined«
Anders als bei einigen Funktionen mit fester Argumentzahl, ergibt sich bei den in dieser Lektion hier vorgestellten Funktionen mit variabler Argumentzahl der Wert »NaN«, falls ein Argumentwert »undefined« ist.
- Auswertung
this.Math.max( 4, undefined )
NaN
- Auswertung
this.Math.hypot( 4, undefined )
NaN
Der Aufruf mit drei Argumenten
Wenn die Funktion »this.Math.max« oder die Funktion »this.Math.hypot« mit einer anderen Zahl von Argumenten aufgerufen wird, dann gilt weiterhin die schon oben beschriebene Semantik.
- Auswertung
this.Math.max( 3, 4, 0 )
4
- Auswertung
this.Math.hypot( 3, 4, 0 )
5
- Auswertung
this.Math.max( 2, 6, 9 )
9
- Auswertung
this.Math.hypot( 9, 6, 2 )
11
Der Aufruf mit einem Argument
Auch beim Aufruf mit nur einem Argument gilt die schon oben beschriebene Semantik.
- Auswertung
this.Math.max( 4 )
4
- Auswertung
this.Math.hypot( 4 )
4
Der Aufruf ohne Argumente
Beim Aufruf einer dieser Funktion ganz ohne Argumente ergibt sich – mathematisch korrekt – der jeweilige neutrale Wert dieser Funktionen. Dies ist ein Wert, den man als Argument zu einer Argumentliste der jeweiligen Funktion hinzufügen kann, ohne das Ergebnis zu verändern.
- Auswertung
this.Math.max()
-Infinity
- Auswertung
this.Math.hypot()
0
Die Funktion »this.String.fromCharCode«
Die Funktion »this.String.fromCharCode« ergibt eine Zeichenfolge, die aus den Zeichen mit den angegebenen Kennzahlen besteht.
- Auswertung
this.String.fromCharCode( 72, 97, 108, 108, 111, 33 )
"Hallo!"
Das neutrale Element einer Operation *
Warum ist »this.Math.max()« gleich »-Infinity«?
Man möchte, daß das Maximum der Maxima zweier Wertelisten das Maximum aller Werte beider Listen ist. Es soll also gelten:
- Bedingung
- max( 3, 9, 7, 4 ) = max( max( 3, 9 ), max( 7, 4 )).
Es soll dabei keine Rolle spielen, in welcher Liste ein Wert steht. Das heißt, man wünscht sich die folgende Gleichheit.
- Bedingung
- max( max( 3, 9 ), max( 7, 4 )) = max( max( 3, 9, 7 ), max( 4 ))
Daraus folgt, daß »max( 4 )« gleich »4« sein muß. Man kann aber nun auch noch die »4« verschieben, und sich wünschen, daß die folgende Gleichheit ebenfalls gelten soll.
- Bedingung
- max( max( 3, 9, 7 ), max( 4 )) = max( max( 3, 9, 7, 4 ), max() )
Diese ist aber nur dann erfüllt, wenn man vereinbart, daß »max()« gleich »-Infinity« ist. Solch einen Wert nennt man auch den neutralen Wert einer Operation. Der neutrale Wert der Operation »max()« ist »-Infinity«.
Der neutrale Wert der Multiplikation ist die Zahl »1«. Wenn man „null-mal“ multipliziert, so sollte dies also »1« ergeben. Dies ist der Grund für das folgende, mathematisch korrekte Verhalten von JavaScript.
- Auswertung
this.Math.pow( 5, 0 )
1
- Siehe auch (Web-Adressen)
en.wikipedia.org/wiki/Iterated_binary_operation
en.wikipedia.org/wiki/Empty_product
en.wikipedia.org/wiki/Empty_sum
en.wikipedia.org/wiki/Empty_function
en.wikipedia.org/wiki/Vacuous_truth
Übersicht
In der folgenden Übersicht steht »this« für das globale Verzeichnis.
- Übersicht der Namen
Name Art Bedeutung
this.Infinity Zahl Unendlich
this.Math.PI Zahl die Kreiszahl Pi
this.Math.abs Funktion Betrag
this.Math.floor Funktion Boden
this.Math.hypot Funktion Hypotenuse
this.Math.isNaN Funktion "ist NaN"
this.Math.parseFloat Funktion Zahl eines Numerales
this.Math.max Funktion Maximum
this.Math.pow Funktion Potenzieren
this.Math.random Funktion Zufallszahl
this.Math.sin Funktion Sinus
this.Math.sqrt Funktion Quadratwurzel
this.String.fromCharCode Funktion Text zu Kennzahlen
this.undefined Wert "kein Wert"
this.NaN Zahl "keine Zahl"