Dynamische Parameteranzahl in JavaScript (Dynamische Parameteranzahl in JavaScript), Notizen, Seite 723560
https://www.purl.org/stefan_ram/pub/dynamische_parameteranzahl_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

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"

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723560 stefan_ram:723560 Dynamische Parameteranzahl in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723560, slrprddef723560, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/dynamische_parameteranzahl_javascript