Funktionsdeklarationen in JavaScript [] (Funktionsdeklarationen in JavaScript), Lektion, Seite 722761
https://www.purl.org/stefan_ram/pub/funktionsdeklarationen_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Funktionsdeklarationen in JavaScript 

nachgeprüft-richtige Begriffe „Funktion“, „Funktionsdeklaration“

Funktionsausdrücke

> wurden schon behandelt

MDN: function expression (function operator)

main.js

"use strict";

document.writeln( "alpha" );

Ausgabe
alpha
main.js

"use strict";

(
function (){ "use strict"; console.log( "alpha" ); }
)
();

Ausgabe
alpha

Der innere Name

Der innere Name wird nicht außerhalb der Funktion als Name definiert.

main.js

"use strict";

(
function thisFunction(){ "use strict"; console.log( thisFunction ); }
)
();

Ausgabe
function thisFunction()
main.js
thisFunction
Ausgabe
ReferenceError: thisFunction is not defined

Ausgabe einer Funktion

main.js

"use strict";

document.writeln
(
function (){ "use strict"; document.writeln( "alpha" ); }
);

Ausgabe
function (){ "use strict"; document.writeln( "alpha" ); }
Allgemeines Muster
f = function g(){ }

Der innere Name »g« kann nur innerhalb des Rumpfes der Funktion verwendet werden, er wird nicht als globaler Name angelegt.

Funktionsdeklarationen

MDN: function declaration (function statement)

main.js

"use strict";

function write_pi(){ "use strict"; document.writeln( Math.PI ); }

write_pi();

document.writeln( write_pi );

Ausgabe

3.141592653589793

function write_pi(){ "use strict"; document.writeln( Math.PI ); }

Nicht vergessen, »function« vor jede Funktionsdeklaration zu schreiben!

Solche äußere Funktionsdefinition werden im Hauptverzeichnis (»this«) eingetragen

function f(){}

ist praktisch eine Abkürzung für

f = function f(){}

Protokoll

function change( v ){ "use strict"; v = 5; document.writeln( v ); }

undefined

Ist die obige Funktion nun definiert oder nicht?

Sequenz mit Funktionsdeklaration in erster Zeile
main.js

"use strict";

function write_pi(){ "use strict"; console.trace(); document.writeln( Math.PI ); }
write_pi();

Ausgabe
3.141592653589793
Schlüsselwörter
typeof, function
Namen dürfen auch Ziffern (jedoch diese nicht am Anfang), Grundstriche »_«, und Dollarzeichen »$« enthalten
main.js

"use strict";

function $$_22$(){ "use strict"; document.writeln( 3 * Math.PI ); }
$$_22$();

Ausgabe
3.141592653589793
Schlüsselwörter
typeof, function
Leere Funktionen
main.js

"use strict";

function empty() {}
function empty1(){ "use strict"; }

Rekursive Funktion
main.js

"use strict";

function dot(){ "use strict"; document.writeln( "." ); dot(); }
dot();

Ausgabe
..............................................

too much recursion 

Aufrufhierarchie (oben, unten, „von unten nach oben“, „von oben nach unten“)
main.js

"use strict";

function unten(){ "use strict"; document.writeln( "unten" ); }
function oben(){ "use strict"; document.writeln( "oben" ); bottom(); }
oben();

Quelltextausgabe
oben
unten
Weiterleitungsfunktion
main.js

"use strict";

function writeln(){ "use strict"; document.writeln() }
writeln();

Quelltextausgabe
(Leerzeile)

document.writeln()

Refaktoren: Umbenennen einer Funktion, Verschieben einer Funktionsdeklaration, Kommentar in Funktionsnamen wandeln, Auslagern in Funktion (extract function), Sandwich pattern,

Übungsfragen

?    Was ist die Ausgabe des folgenden Skripts?
main.js

"use strict";

function beta(){ "use strict"; document.writeln( "beta" ); }
function main(){ "use strict"; document.writeln( "alpha" ); }
main();

?    Was ist die Ausgabe des folgenden Skripts?
main.js

"use strict";

function beta(){ "use strict"; document.writeln( "beta" ); }
function zeta(){ "use strict"; beta(); beta(); }
function main(){ "use strict"; beta(); zeta(); }
main();

?    Was ist die Ausgabe des folgenden Skripts?
main.js

"use strict";

function beta(){ "use strict"; document.write( "[" ); document.write( "]" ); }
function main(){ "use strict"; document.write( "[" ); beta(); document.write( "]" ); }
main();

Übungsaufgaben

Um die richtige Syntax zu erhalten, ist es empfehlenswert, eines der Beispielskripte aus dieser Lektion zu kopieren, und dies schrittweise umzuarbeiten.

/    Textausgabe
Schreiben Sie eine Deklaration einer Funktion namens »helloWord«, so daß die Auswertung des Aufrufausdrucks »helloWorld()« den Text »hello, world« ausgibt.

Zusatzaufgaben

/    Funktion deklarieren
Schreiben Sie das folgende Skript so um, daß sich wiederholende Anweisungen von einer Funktion ausgeführt werden, die dann wiederholt aufgerufen wird (bzw. aufgerufen werden). Das Umschreiben soll die Ausgabe des Skripts nicht verändern. Es sollte möglichst nur eine einzige  weitere Funktion zu der Klasse hinzugefügt werden.
Script
document.writeln( "Tomaten" );
document.writeln( "Rotkohl Gruenkohl" );
document.writeln( "Gurken" );
document.writeln( "Tomaten" );
document.writeln( "Rotkohl Gruenkohl" );
document.writeln( "Spinat" );
document.writeln( "Tomaten" );
document.writeln( "Rotkohl Gruenkohl" );
document.writeln( "Kohlrabi" );
Ausgabe
Tomaten
Rotkohl Gruenkohl
Gurken
Tomaten
Rotkohl Gruenkohl
Spinat
Tomaten
Rotkohl Gruenkohl
Kohlrabi
Hinweis Falls die Aufgabe schwerfällt, kann das am Anfang dieser Lektion stehende Beispielskript mit der Funktion »refrainAusgeben« als Vorlage für die Lösung verwendet werden, indem darin schrittweise die Texte durch die für die Lösung dieser Aufgabe passende Texte ersetzt werden.

Die folgende Übungsaufgabe gehört zum roten Faden „Würfeln“.

/    Würfelfunktion
Schreiben Sie eine Wirkfunktion, welche eine Pseudozufallszahl ausgibt, die zwischen 1.0 (einschließlich) und 7.0 (ausschließlich) liegt. Nach jedem Aufruf der Funktion soll also eine Zahl ausgegeben werden, deren Vorkommastelle zwischen 1 (einschließlich) und 6 (einschließlich) liegt, wobei jeder der Werte 1, 2, 3, 4, 5 und 6 mit gleicher Wahrscheinlichkeit als Vorkommastelle vorkommt.

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 stefanram722761 stefan_ram:722761 Funktionsdeklarationen in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722761, slrprddef722761, 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/funktionsdeklarationen_javascript