Funktionale Argumente in JavaScript (Funktionale Argumente in JavaScript), Lektion, Seite 723738
https://www.purl.org/stefan_ram/pub/funktionale_argumente_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Funktionale Argumente in JavaScript 

Hinweis für den Dozenten  ► Hier sollten zumindest die Übungsfragen behandelt werden!

Die in dieser Lektion behandelte Übergabe funktionaler Argumente (Rückruftechnik) macht jedoch das Prinzip solcher Funktionen wie »AddEventListener« verständlich.

Ein Parameter kann auch als Funktion  verwendet werden. Bei der folgenden Definition der Funktion »m« wird der Parameter »f« auf der rechten Seite als eine Funktion verwendet.

Auswertung
m = f => f( 9 )
function m()

Nun kann beim Aufruf eine Funktion als Argument übergeben werden. Im folgenden Beispiel wird die Funktion »this.Math.sqrt« als Argument übergeben. Die Auswertung von »f( 9 )« ergibt dann »this.Math.sqrt( 9 )«, also »3«.

Auswertung
m( this.Math.sqrt )
3

Unter einem funktionalen Argument  verstehen wir hier ein solches Argument wie »this.Math.sqrt«, das selber eine Funktion ist.

Wir können aber genausogut eine anonyme Pfeilfunktion als Argument übergeben.

Auswertung
m( x => x * x )
81

Man kann die Bedeutung der Funktion »m« beschreiben, indem man sagt, daß diese eine ihr übergebene Funktion für den Wert »9« auswertet.

Da JavaScript  den Namen des globalen Eintrages »f« an der Position vom Namen des Parameters »f« unterscheiden kann, darf man auch für beide denselben Namen »f« verwenden.

Auswertung
f = f => f( 9 )
function f()
Auswertung
f( this.Math.sqrt )
3
Auswertung
f( x => x * x )
81

Auch bei der voranstehenden Auswertung könnte man wieder »f« als Parametername verwenden. Trotz der Namensgleichheit ist dies dann ein anderer Parameter als der in der Definition der Funktion »f« verwendete, weil er zu einer anderen Funktion gehört.

Auswertung
f( f => f * f )
81

Sogar bei einer direkten Anwendung einer Funktion auf eine andere kann JavaScript  die beiden Parameter unterscheiden.

Auswertung
( f => f( 9 ) )( f => f * f )
81

Die letzte Klammer »( f => f * f )« drückt einfach eine Quadrierfunktion aus, für die der für ihren Parameter gewählte Name keine Rolle mehr spielt, man könnte genauso gut auch »( x => x * x )« schreiben, um eine gleichwertige Funktion zu definieren. Diese Quadrierfunktion wird dann von der ersten Funktion »( f => f( 9 ) )« auf »9« angewendet.

Auswertung
quadrierfunktion = f => f * f
function quadrierfunktion()
Auswertung
( f => f( 9 ) )( quadrierfunktion )
81
Auswertung
quadrierfunktion( 2 )
4
Auswertung
quadrierfunktion = x => x * x
function quadrierfunktion()
Auswertung
( f => f( 9 ) )( quadrierfunktion )
81
Auswertung
quadrierfunktion( 2 )
4

Notiz

main.js

WertBeiVier = f => f( 4 )

print( WertBeiVier( Math.sqrt ))

print( WertBeiVier( x => x + 2 ))

Protokoll

2

6

Übungsfragen

?   Übungsfragen

Können Sie die Werte der folgenden Ausdrücke vorhersagen?

Ausdruck
( f => f( 9 ))( Math.sqrt )
Ausdruck
( f => f( 9 )+ f( 16 ))( Math.sqrt )
Ausdruck 1
(  f => f( 2 )* f( 3 ))( x => x + 1 )
Ausdruck 2
( x => x() )( x => 2 )

?   Übungsfrage ⃖

Welche Ausgabe erzeugt die folgende Sequenz?

main.js
console.log( 2 );

?   Übungsfrage (1) ⃖

Welche Ausgabe erzeugt die folgende Sequenz?

main.js

f = ()=> console.log( 3 );

{ f(); f(); }

?   Übungsfrage (2) ⃖

Welche Ausgabe erzeugt die folgende Sequenz?

main.js

f = ()=> console.log( 3 );

g = x=>{ x(); x(); }

g( f )

?   Übungsfrage (3) ⃖

Welche Ausgabe erzeugt die folgende Sequenz?

main.js

f = ()=> console.log( 3 );

h = ()=> console.log( 4 );

g = x=>{ x(); x(); }

g( f );

g( h )

?   Übungsfrage (4) ⃖

Welche Ausgabe erzeugt die folgende Sequenz?

main.js

f = ()=> console.log( 3 );

g = x=>{ x(); x(); }

g( f() )

 

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 stefanram723738 stefan_ram:723738 Funktionale Argumente in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723738, slrprddef723738, 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/funktionale_argumente_javascript