Die Rückgabeanweisung in JavaScript (Die Rückgabeanweisung in JavaScript), Lektion, Seite 723742
https://www.purl.org/stefan_ram/pub/rueckgabeanweisung_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Die Rückgabeanweisung in JavaScript 

Wir haben bisher zwei Arten von Funktionsdefinitionen kennengelernt:

In dieser Lektion wird nun erklärt, wie auch eine Blockfunktion einen Wert zurückgeben kann.

Die Rückgabeanweisung

Syntax

Die Rückgabeanweisung besteht aus dem Wort »return«, einem optionalen Ausdruck und einem Semikolon »;«.

Die Syntax für die return-Anweisung (Rückgabeanweisung) lautet wie folgt.

Rückgabeanweisung
Rueckgabeanweisung
.ooooooooooooooooooo.
o o
.------. o .----------. v .-.
--->( return )ooo'ooo>| Ausdruck |ooo'ooo>( ; )--->
'------' '----------' '-'

Den Ausdruck zwischen »return« und dem Semikolon »;« nennen wir auch den Rückgabeausdruck  oder return-Ausdruck  dieser return-Anweisung.

Dieser Ausdruck kann auch entfallen, was dieselbe Bedeutung hat, wie die Verwendung des Ausdrucks »undefined«. »return;« bedeutet als »return undefined;«.

Semantik

Die Auswertung einer Rückgabeanweisung im Block einer Blockfunktion legt den Wert der aktuellen Inkarnation (also des aktuellen Aufrufs) jener Funktion fest und beendet dann die Auswertung der Inkarnation.

Beispiele

Wir zeigen zunächst ein Pfeilfunktion der schon bekannten Art, die den Wert 2 ergibt.

Auswertung
f = ()=> 2
function f()
Auswertung
f()
2

Eine Pfeilfunktion, die den Wert 2 ergibt, kann nun auch als eine Blockfunktion  definiert werden. In diesem Fall muß die Wertrückgabe mit der Rückgabeanweisung  erfolgen.

Auswertung
f = ()=> { return 2; }
function f()
Auswertung
f()
2

Wirkungen und Wert, Rückgabe und Ausgabe

Vor die Rückgabeanweisung können auch andere Anweisungen geschrieben werden.

Auswertung
f = ()=> { console.log( 4 ); return 2; }
function f()
Auswertung
f()

4

2

Oben ist die Ausgabe von »4« die Wirkung  der Funktion »f« und »2« der Wert  der Funktion »f«.

Der Text »4« wird von der Funktion ausgegeben, während die Zahl »2« von der Funktion zurückgegeben  wird.

Die Ausgabe  erfolgt in der Funktion mit der Anweisung »console.log( 4 );«, die Rückgabe  mit der Anweisung »return 2;«.

Man beachte den Unterschied zwischen Wirkung  und Wert, beziehungsweise zwischen Ausgabe  und Rückgabe !

»return« und Leerraum

Man beachte, daß nach »return« Leerraum nötig ist, wenn ein Name oder Numerale direkt folgt, weil das Schlüsselwort »return« sonst mit diesem zu einer lexikalischen Einheit verschmelzen würde.

Eine lexikalische Einheit
returnx
Zwei lexikalische Einheiten
return x
Eine lexikalische Einheit
return7
Zwei lexikalische Einheiten
return 7

Das Sonderzeichen nicht Teil eines Worts sein können, ist vor ihnen nicht unbedingt Leerraum nötig.

Drei lexikalische Einheiten
return+7
Vier lexikalische Einheiten
return( 7 )

»return« und Zeilenende

Bei

Quelltext

return

7

Quelltext

wird automatisch ein Semikolon hinter »return« eingefügt. Es ergibt sich also die folgende Sequenz:

Quelltext

return;

7;

Die Wirkung der obenstehenden Sequenz ist wie die Wirkung der folgenden Anweisung.

Quelltext
return undefined;

Selbst in den folgenden Quelltext wird ein Semikolon hinter das »return« eingefügt.

Quelltext

return/*

*/7

Wenn ein numerischer Rückgabeausdruck hinter »return« erst in der nächsten Zeile folgen soll, gibt es aber doch Möglichkeiten zu verdeutlichen, daß die Rückgabeanweisung noch nicht abgeschlossen ist.

Quelltext
return +
7;

Klammern können die Fortsetzung auch für andere Datentypen ermöglichen.

Quelltext
return (
"abc" );

»return« im onclick-Attribut

Viele Browser akzeptieren »;return true« oder »;return false« am Ende des onclick-Attributwertes, um festzulegen, ob nach der Ereignisbehandlung zu der href-Adresse weitergegangen werden soll, aber dieser Stil gilt als veraltet. Wir werden später bessere Alternativen dafür kennenlernen.

Main.html
Element: 
<span
id=a
onclick="alert('angeklickt!');return false">
Text</span>

Übungsfragen

?   Übungsfrage

Was ist die Ausgabe der folgenden Sequenz?

Sequenz
beta = ()=> { return "[]"; };
zeta = ()=> { return "[" + beta() + "]"; };
main = ()=> { console.log( zeta() ); };
main();

Übungsaufgaben

/   Übungsaufgabe

Schreiben Sie die beiden folgenden Definitionen von Pfeilfunktionen in Definitionen von Blockfunktionen um. (Der Aufruf von »g« sollte dann weiterhin »19« ergeben.)

Eingaben

f = x => x * 5

g = ()=> f( 4 )- 1

/   Übungsaufgabe

Schreiben Sie die beiden folgenden Definitionen von Blockfunktionen in Definitionen von Pfeilfunktionen ohne Block um. (Der Aufruf von »g« sollte dann weiterhin »14« ergeben.)

Eingaben

f = x => { return 2 * x; }

g = ()=> { return 8 + f( 3 ); }

Zitat *

Zitat aus ECMAScript 2016, 11.6.2.1 (vereinfacht und gekürzt) *
The following tokens are ECMAScript keywords and may not be used as Identifiers in ECMAScript programs.

Keyword one of:

in typeof return

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 stefanram723742 stefan_ram:723742 Die Rückgabeanweisung in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723742, slrprddef723742, 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/rueckgabeanweisung_javascript