Anweisungen in JavaScript (Anweisungen in JavaScript), Lektion, Seite 722585
https://www.purl.org/stefan_ram/pub/anweisungen_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Anweisungen und Sequenzen in JavaScript 

Eine Anweisung  ist ein Text, der einem Computer sagt, was er tun soll. Eine Anweisung  verlangt  etwas. Sie entspricht einem Befehlssatz des Deutschen.

Bei der Auswertung einer Anweisung  tut der Computer das, was die Anweisung von ihm verlangt.

Auswertungsanweisungen

Ein Ausdruck mit einem folgenden Semikolon (zB »console.log( … );«) ist eine Auswertungsanweisung.

Auswertungsanweisung (Syntaxdiagramm)
     .----------.      .-.
---->| Ausdruck |---->( ; )---->
'----------' '-'

Bei der Auswertung dieser Anweisung wird der Ausdruck ausgewertet. Der Wert der Anweisung ist der von jener Auswertung ermittelte Wert.

(Das Semikolon wird von der ECMAScript -Spezifikation im Abschnitt 13.5 “Expression Statement verlangt.)

Wenn der Computer das tut, was die Anweisung verlangt, dann sagt man auch, daß der Computer die Anweisung auswerte.

In dem folgenden Beispiel findet sich die Anweisung »3;«.

Auswertung
3;
3

Der Wert der Anweisung ist »3«. Jener Wert wird von den meisten Konsolen auch ausgegeben.

In dem folgenden Beispiel findet sich die Anweisung »console.log( 7 );«.

Auswertung
console.log( 7 );
7

Bei der Auswertung dieser Anweisung wird der Ausdruck »console.log( 7 )« ausgewertet, was zur Ausgabe von »7« führt.

Zerlegung einer Auswertungsanweisung

console.log( 7 ) ;


'----------------------------------------------------' '-----------'
Ausdruck Semikolon

| |
'--------------------------------------------------------------------------'
Auswertungsanweisung

Wenn man das Semikolon einmal vergessen hat, dann wird es von JavaScript oft automatisch ergänzt. Diese Automatik führt allerdings manchmal auch dazu, daß ein Semikolon ergänzt wird, wo wirklich keines stehen soll und ist daher eher lästig als hilfreich. Die meisten guten Programmierer schreiben alle Semikolons ausdrücklich hin und ignorieren die Möglichkeit, manche Semikolons weglassen zu können. Die automatische Ergänzung von Semikolons in JavaScript war einst gut gemeint, aber sie ist oft eher lästig.

Sequenzen

Ein „Skript “ wird in ECMAScript 2015 15.1 und 13.2 als eine Folge von Anweisungen  definiert, die mit einem neuen globalen Objekt beginnt, in dem noch keine Veränderungen durch JavaScript -Auswertungen vorgenommen wurden (ECMAScript 2015 15.1). Um Verwechslungen mit einem vollständigen Skript zu vermeiden, sprechen wir von einer Sequenz, um eine Folge von Anweisungen zu bezeichnen, die als eine Einheit angesehen und eingegeben wird, die aber kein vollständiges Skript sein muß, sondern auch ein Teil eines größeren Skripts sein kann.

Eine Sequenz ist beispielsweise »console.log( 7 ); console.log( 8 );«. Bei der Auswertung einer Sequenz werden ihre Anweisungen in der im Text gegebenen Reihenfolgen zeitlich hintereinander abgearbeitet.

Auswertung
console.log( 7 ); console.log( 8 );

7

8

undefined

Es erscheint (in einigen Konsolen) nur einmal »undefined«, wenn eine Sequenz zweier Anweisungen ausgewertet wird, die beide »undefined« ergeben. Würde man jede Anweisung einzeln eingeben, so würde zwei Mal »undefined« ausgegeben werden.

Laufzeitfehler

Bestimmte Auswertungen können zu Laufzeitfehlern führen. Hierbei handelt es sich darum, daß die JavaScript -Implementation erkennt, daß sie etwas tun soll, das gemäß den Regeln der Programmiersprache JavaScript  zu einem Laufzeitfehler führt. Dann wird eine Fehlermeldung ausgegeben und die Auswertung abgebrochen.

Wenn ein Laufzeitfehler auftritt, werden folgende Anweisungen bei der Auswertung einer Sequenz also nicht mehr ausgewertet.

So bewirkt die Auswertung der folgenden Sequenz nur die Ausgabe von »a«, nicht aber die Ausgabe von »b«.

Auswertung
console.log( "a" ); roegrwri; console.log( "b" );

a

ReferenceError: roegrwri is not defined

Wenn ein Skript sich also nicht wie gewünscht verhält, so kann die Ursache dafür ein Laufzeitfehler sein. Meldungen von Laufzeitfehlern werden bei manchen JavaScript -Implementationen immer etwas versteckt. Der Programmierer sollte also darauf achten, daß er bei der Ausführung von Programmen immer dorthin schaut, wo solche Fehlermeldungen angezeigt werden – insbesondere, wenn sich ein Programm nicht wie gewünscht verhält.

Die automatische Semikoloneinfügung

In der ECMAScript -Spezifikation 2018 11.9 “Automatic Semicolon Insertion ” wird die automatische Semikoloneinfügung  beschrieben, welche in manchen Fällen automatisch ein Semikolon in den Quelltext einfügt, wenn dieser von einer ECMAScript -Implementation ausgeführt wird.

Dies ist die Erklärung dafür, daß das Semikolon »;« in manchen Fällen auch weggelassen werden kann – so beispielsweise wenn eine Ausdruck auf einer Zeile für sich steht, der von der nächsten Zeile nicht fortgesetzt wird.

Die Regeln für die automatische Semikoloneinfügung sind kompliziert, daher zeigen wir hier zunächst nur zwei Beispiele.

Eingabe
2
3
Interpretation der Eingabe
2; 3;
Ausgabe
3

(Zur Eingabe in eine Konsole muß hier manchmal Umschalt-Eingabe  ⇑ - ↵  nach der »2« verwendet werden.)

Die Ausgabe kann dadurch erklärt werden, daß die Eingabe nach der automatischen Semikoloneinfügung als Folge zweier Ausdrucksanweisungen interpretiert wird.

Im folgenden Beispiel wird kein  Semikolon nach der »2« eingefügt, da mit den beiden folgenden Zeilen noch eine Verlängerung des Ausdrucks möglich ist.

Eingabe
2
-
3
Interpretation der Eingabe
2 - 3;
Ausgabe
-1

Stilregeln für JavaScript 

Um den Komplikation der automatischen Semikoloneinfügung zu entkommen, empfehlen wir, auf ihre Nutzung zu verzichten und alle notwendigen Semikolons immer hinzuschreiben. (Dennoch macht sich selbst dann die automatische Semikoloneinfügung immer noch dadurch bemerkbar, daß sie es verhindert, daß in bestimmten Fällen an Stelle eines Leerzeichen ein Zeilenende verwendet werden kann.)

Stilregeln für JavaScript 

https://github.com/airbnb/javascript

https://airbnb.io/projects/javascript/

http://airbnb.io/javascript/css-in-javascript/

Übungsfragen

?   Texte klassifizieren

Geben Sie zu den folgenden Texten jeweils an, ob sie eine Anweisung, ein Ausdruck  oder keines von beidem  sind.

Auswertungsanweisung (Syntaxdiagramm)
     .----------.      .-.
---->| Ausdruck |---->( ; )---->
'----------' '-'

?   Ausgabe vorhersagen

Welche Ausgabe erzeugt die Eigabe der folgenden Zeile in die Konsole?

Auswertung
console.log( 1 ); 2; console.log( Math.floor( 3 )); Math.floor( 4 ); 5

?   Satz

Ergänzen Sie den folgenden Satz durch das Einsetzen einer Form eines Verbes.

Satz
Bei der Auswertung der Auswertungsanweisung wird ihr Ausdruck __________.

Zitat *

But insisting on Java’s class and type declarations, or on a semicolon after each statement when a line ending would do, was out of the question—scripting for most people is about writing short snippets of code, quickly and without fuss ” - Brendan Eich, 2001

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 stefanram722585 stefan_ram:722585 Anweisungen in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722585, slrprddef722585, 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/anweisungen_javascript