Ausgabeanweisungen in JavaScript (Ausgabeanweisungen in JavaScript), Lektion, Seite 722624
https://www.purl.org/stefan_ram/pub/ausgabeanweisung-javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Wirkfunktionen in JavaScript 

Ein Ausgabefunktion gibt einen ihr übergebenen Wert aus.

In JavaScript  gibt es keine immer verfügbare Ausgabefunktion als festen Teil der Sprache. Zum Lernen ist es allerdings hilfreich, wenigstens vorläufig, eine Ausgabeanweisung zu verwenden. Oft steht auch eine Ausgabeanweisung zur Verfügung, die aber nicht unter jeder Umgebung gleich ist. Wir nehmen für diese Lektion eine bestimmte Schreibweise einer Ausgabeanweisung an, die unter vielen, aber nicht unter allen, Umgebungen auch verfügbar ist. Falls die hier vorgestellte Ausgabeanweisung nicht verwendbar ist, kann dem Handbuch der verwendeten Umgebung aber meist eine andere Ausgabeanweisung entnehmen werden, welche dann an Stelle der hier vorgestellten verwendet werden sollte.

Die Ausgabefunktion »console.log« kann in vielen Browsern verwendet werden.

Die Ausgabefunktion »console.log« gibt die Werte der ihr übergebenen Ausdrücke auf die Konsole aus.

Konsole
window.console.log( "abc" )

abc

undefined

Die Ausgabe von »abc« ist die Wirkung  der Auswertung des eingegebenen Ausdrucks.

Wenn die Auswertung eines Aufrufs einer Funktion eine Wirkung hat, dann nennen wir jene Funktion eine Wirkfunktion.

»window.console.log« ist ein Beispiel für eine Wirkfunktion. Die Auswertung des Aufrufes »window.console.log( "abc" )« bewirkt eine Ausgabe, also hat sie eine Wirkung. Zuvor hatten wir in diesem Kapitel schon die Zuweisung als Beispiel eines Wirkoperators kennengelernt.

Man sieht darunter noch den Wert  des Ausdrucks »windows.console.log( "abc" )«, dies ist »undefined«. Dieses wenig informative »undefined« lassen wir zukünftig bei der Wiedergabe von Konsoleninhalten machmal weg.

In der Konsole von Mozialla Firefox  38 wird der Wert eines eingegebenen Ausdrucks in Anführungszeichen gesetzt, wenn der Wert eine Zeichenfolge ist und diese insgesamt so dargestellt, daß sie im Quelltext verwendet werden kann. Bei der Ausgabe einer Zeichenfolge mit »windows.console.log« geschieht dies aber nicht.

Konsole
'a"b'
"a\"b"
Konsole
console.log( 'a"b' )
a"b

Mit Hilfe von »console.log« können wir endlich die Zeichenfolge eine Zeichenfolgenliterals sehen, ohne daß zu dieser noch Anführungszeichen hinzugefügt werden!

Main.html
<em id=a>abc</em>
mögliche Anzeige in Web-Browser
abc
Auswertung
a.outerHTML
"<em id=\"a\">abc</em>"
Auswertung
console.log( a.outerHTML )
<em id="a">abc</em>

Das folgende Beispiel zeigt die Ausgabe der Werte mehrerer Auswertungen.

Konsole
window.console.log( k = 2, k + 3 )
2 5

Eine Klammerpfeilfunktion mit einer Wirkung

Es ist auch möglich »console.log« innerhalb einer Funktion zu verwenden, um bei Aufruf der Funktion etwas auszugen. Das Ergebnis solch einer Funktion ist dann »undefined«.

Konsole
p = ()=> window.console.log( "abc" )
function p()
Konsole
p()

abc

undefined

Die Reihenfolge der Auswertung von Argumenten

Bei der Auswertung mehrerer Argumentausdrücke eines Aufrufs wird von links nach rechts vorgegangen, das erste Argument wird also vor dem zweiten ausgewertet. (Ecma 262 2015, ArgumentListEvaluation 12.3.6.1: “ArgumentList : ArgumentList , AssignmentExpression ”)

Konsole
this.Math.pow( window.console.log( "abc" ), window.console.log( "def" ))

abc

def

NaN

Wir können diese Reihenfolge der Auswertung erst mit Hilfe von Wirkfunktionen  auf einfache Weise beobachten.

Der toString-Eintrag eines Verzeichnisses

Zunächst wird ein globaler Schlüssel »x« an eine Funktion »()=>0« gebunden.

Auswertung
x = ()=>0
function x()

Bei der Verkettung mit einer leeren Zeichenfolge wird die Funktion »x« in eine Zeichenfolge (hier »()=>0«) gewandelt.

Auswertung
String( x )
()=>0

Der Schlüssel »toString« des Verzeichnisses »x« wird nun an eine parameterlose Funktion gebunden, welche den Namen »Anton« ergibt.

Auswertung
x.toString = ()=>"Anton"
function x.toString()

Bei der Wandlung eines Verzeichnisses in eine Zeichenfolge verwendet eine ECMAScript -Implementation das Ergebnis einer eventuell vorhandenen Funktion mit dem Schlüssel »toString« als Zeichenfolge. Daher hat der Ausdruck »x + ""« nun die Zeichenfolge »Anton« als Wert.

Auswertung
String( x )
"Anton"

Durch Bindung des Schlüssel »toString« eines Verzeichnisses an eine geeignete Funktion können wir die Zeichenfolgendarstellung des Verzeichnisses festlegen.

Wird das Verzeichnis statt dessen mit »console.log( x )« ausgegeben werden, so könnte ein spezielles Ausgabeverfahren der Konsole verwendet werden, bei dem der Eintrag »toString« nicht berücksichtigt wird.

Auswertung
console.log( x )
function x()

Um die von ECMAScript  festgelegt Zeichenfolgendarstellung auszugeben, sollte diese zunächst mit »String« erzeugt werden, da außerhalb von ECMAScript  festgelegt Funktion, wie die vom Browser festgelegte Funktion »console.log« abweichende Verfahren verwenden könnten, um das Auszugebende in einen Text zu verwandeln.

Auswertung
console.log( String( x ))
"Anton"

Problemratgeber

Wenn in der Konsole von Firefox  das Rechteck [Logbuch] (englisch: [Logging]) deaktiviert ist, dann werden die mit »console.log« erzeugten Ausgaben nicht  angezeigt. Unter Umständen kann es dann nötig sein, dieses Rechteck zu aktivieren und dann Firefox  neu zu starten!

Wenn ein Skript mehrfach hintereinander Zeilen mit demselben Text ausgibt, dann werden diese Zeilen unter manchen Konsolen manchmal zu einer Zeile zusammengefaßt und die Anzahl der Wiederholungen der Zeile durch eine Zahl ausgedrückt. Gibt man also beispielsweise drei Mal hintereinander die Zeile »Hallo, Welt!« aus, so erscheint manchmal etwas wie »Hallo, Welt! (3)«.

Übungsfragen

?   Übungsfrage

Welchen Wert hat der folgende Ausdruck und warum?

Ausdruck
console.log( 2 )+ 0

?   Übungsfrage

Was wird von der zweiten Anweisung ausgegeben?

Ausdruck

w = console.log( 2 );

w = console.log( w );

Übungsaufgaben

/   Übungsaufgabe

Schreiben Sie eine Funktion »f«, deren Aufruf den Wert »4« ergibt, und eine Funktion »g«, bei deren Aufruf die Zeile »4« auf die Konsole geschrieben wird.

Auswertung
e = f()
4
Auswertung
e
4
Auswertung
g()

4

undefined

Auswertung
e = g()

4

undefined

Auswertung
e
undefined

?   Reihenfolge von Operationen

Bei der Auswertung des weiter unten stehenden Ausdrucks, werden die folgenden vier Operation (Rechenschritte) ausgeführt.

Diese vier Operationen werden aber bei der Auswertung des ganzen Ausdrucks nicht unbedingt auch in dieser Reihenfolge „A, B, C, D“ ausgeführt. In welcher Reihenfolge werden sie ausgeführt?

Ausdruck
this.Math.imul( this.Math.floor( 2.7 ), this.parseFloat( "2." + "2" ))

/   Übungsaufgabe

Schreiben Sie eine Funktion »w«, deren Aufruf eine Zufallszahl zwischen 1 und 6 (einschließlich) ergibt, und eine Funktion »pw«, bei deren Aufruf mit »console.log« eine Zufallszahl zwischen 1 und 6 auf die Konsole geschrieben wird. Dabei sollte die Funktion »w« in der Definition der Funktion »pw« verwendet (aufgerufen) werden.

Quellen *

Herstellerunabhängige Spezifikation
The logger operation accepts a log level and a List of other arguments. Its main output is the implementation-defined side effect of printing the result to the console.
https://console.spec.whatwg.org/

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 stefanram722624 stefan_ram:722624 Ausgabeanweisungen in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722624, slrprddef722624, 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/ausgabeanweisung-javascript