Читать книгу JavaScript für Ungeduldige - Cay Horstmann - Страница 59
2.1Ausdrücke und Anweisungen
ОглавлениеEbenso wie in Java und C++ wird in JavaScript zwischen Ausdrücken und Anweisungen unterschieden. Ein Ausdruck hat einen Wert. Beispielsweise ist 6 * 7 ein Ausdruck mit dem Wert 42. Auch Methodenaufrufe wie Math.max(6, 7) sind Ausdrücke.
Anweisungen dagegen haben niemals einen Wert, sondern werden ausgeführt, um eine bestimmte Auswirkung zu erzielen. Betrachten Sie dazu das folgende Beispiel:
let number = 6 * 7;
Dies ist eine Anweisung, und ihre Auswirkung besteht darin, dass die Variable numer deklariert und initialisiert wird. Eine Anweisung dieser Art wird als Variablendeklaration bezeichnet. Andere gebräuchliche Arten von Anweisungen sind Verzweigungen und Schleifen, mit denen wir uns weiter hinten in diesem Kapitel beschäftigen werden.
Die einfachste Form einer Anweisung ist die Ausdrucksanweisung, die lediglich aus einem Ausdruck gefolgt von einem Semikolon besteht:
console.log(6 * 7);
Der Ausdruck console.log(6 * 7) hat einen Seiteneffekt: Er zeigt 42 in der Konsole an. Außerdem hat er einen Wert, der allerdings undefined lautet, da die Methode console.log nichts Interessanteres zurückgibt. Aber selbst wenn dieser Ausdruck einen interessanteren Wert hätte, würde das keine Rolle spielen, denn der Wert einer Ausdrucksanweisung wird verworfen.
Eine Ausdrucksanweisung ist daher nur für Ausdrücke sinnvoll, die einen Seiteneffekt haben. Die folgende Ausdrucksanweisung ist zwar gültiges JavaScript, hat aber keine Auswirkungen auf das Programm:
6 * 7;
Es ist gut, zwischen Ausdrücken und Anweisungen unterscheiden zu können, allerdings ist es in JavaScript etwas knifflig, den Unterschied zwischen einem Ausdruck und einer Ausdrucksanweisung zu erkennen. Wie Sie im nächsten Abschnitt sehen werden, wird automatisch ein Semikolon ergänzt, wenn Sie in eine Zeile nur einen einzelnen Ausdruck schreiben, was daraus eine Anweisung macht. Daher ist es in der JavaScript-Konsole des Browsers und in Node.js nicht möglich, einen Ausdruck zu untersuchen.
Wenn Sie beispielsweise 6 * 7 eingeben, wird der Wert dieses Ausdrucks angezeigt:
6 * 7
42
Das macht eine REPL (Read-Eval-Print Loop): Sie liest einen Ausdruck, wertet ihn aus und gibt den Wert aus.
Aufgrund der automatischen Semikolonergänzung sieht die JavaScript-REPL in Wirklichkeit jedoch die folgende Anweisung:
6 * 7;
Anweisungen haben keine Werte, aber die JavaScript-REPL zeigt trotzdem Werte für sie an.
Geben Sie nun die folgende Variablendeklaration ein:
let number = 6 * 7;
undefined
Bei der Ausdrucksanweisung hat die REPL den Wert des Ausdrucks angezeigt, bei der Variablendeklaration dagegen undefined. In Übung 1 werden Sie sich damit beschäftigen, was bei anderen Anweisungen angezeigt wird.
Für Ihre eigenen Experimente in der REPL ist es wichtig zu wissen, wie Sie die Ausgaben interpretieren müssen. Geben Sie beispielsweise die folgende Ausdrucksanweisung ein und schauen Sie sich die Antwort an:
console.log(6 * 7);
42
undefined
Die erste Zeile der Ausgabe ist der Seiteneffekt des Aufrufs von console.log, die zweite ist der Rückgabewert des Methodenaufrufs. Wie bereits erwähnt, gibt console.log den Wert undefined zurück.