Aufwärmen · Aufgabe 1 von 7
// B3.1 · ca. 30 Min. · Einstieg
if, else und Truthiness
Nach dieser Lektion schreiben Sie if-, else-if- und else-Ketten, die den richtigen Zweig wählen, wissen, welche Werte als falsch gelten, und nutzen &&, ||, ! und ?? für Bedingungen und Standardwerte.
Lektion 1 von 5 in B3 Kontrollfluss und Schleifen
Danach können Sie
- if-, else-if- und else-Ketten mit Blöcken schreiben und vorhersagen, welcher Zweig läuft
- Die acht falsy-Werte von truthy-Werten wie "0", [] und {} unterscheiden
- Vorhersagen, welchen Wert &&, ||, ! und ?? liefern, und für einen Standardwert || oder ?? wählen
Vorhersagen · Aufgabe 2 von 7
Sagen Sie es vorher, bevor Sie weiterlesen: Ein Formularfeld hat Ihnen den Text "0" geliefert. Was gibt dieser Code aus?
const input = "0"; if (input) { console.log("got an answer"); } else { console.log("no answer"); }Üben · Aufgabe 3 von 7
Die gespeicherte Lautstärke 0 ist eine echte Einstellung. Ergänzen Sie den Operator so, dass das Programm 0 ausgibt und 50 nur verwenden würde, wenn nichts gespeichert wäre (null oder undefined).
const saved = 0; const volume = saved ____ 50; console.log(volume);const volume = saved 50;Üben · Aufgabe 4 von 7
Es sind 25 Grad. Was gibt dieser Code aus?
const temp = 25; if (temp > 10) { console.log("mild"); } else if (temp > 20) { console.log("warm"); } else { console.log("cold"); }Üben · Aufgabe 5 von 7
Ordnen Sie jedem Ausdruck den Wert zu, den er liefert.
Denksport · Aufgabe 6 von 7
Knobelaufgabe. Die Einkaufsliste ist leer. Was gibt dieser Code aus?
const list = []; if (list) { console.log("time to shop"); } else { console.log("nothing to buy"); }Anwenden · Aufgabe 7 von 7
Kleine Aufgabe. Schreiben Sie eine Kinokasse: Kinder unter 6 zahlen nichts, unter 18 zahlen 6 EUR, alle anderen 10 EUR. Speichern Sie das Alter in einer Konstante und geben Sie den Preis mit einer Kette aus if, else if und else aus. Begrüßen Sie den Gast dann mit seinem Spitznamen oder mit "movie fan", wenn der Spitzname null ist. Probieren Sie die Alter 3, 6, 17, 18 und 40.
Prüfen Sie Ihr Ergebnis anhand dieser Liste
Selbst programmieren
Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.
Ausgearbeitetes Beispiel
Ein Versandprüfer
Dieses Programm entscheidet, wie eine Bestellung verschickt wird. Eine else-if-Kette wählt den Versandpreis, ! macht aus false ein true, ein leerer Gutschein gilt als falsch, und ??, && und || füllen die übrigen Zeilen. Führen Sie es aus, setzen Sie dann total auf 60 oder 10, coupon auf "SPRING" oder note auf "ring twice", und sagen Sie jede Zeile vorher, bevor Sie es erneut ausführen.
main.js
// Decide how an order is shipped.
const total = 42.5;
const express = false;
const coupon = "";
const note = null;
if (total >= 50) {
console.log("Shipping: free");
} else if (total >= 20) {
console.log("Shipping: 2.99 EUR");
} else {
console.log("Shipping: 4.99 EUR");
}
if (!express) {
console.log("Delivery: standard");
}
if (coupon) {
console.log("Coupon:", coupon);
} else {
console.log("Coupon: none");
}
console.log("Note:", note ?? "no note");
console.log("Gift wrap:", total > 40 && "offered");
console.log("Label:", coupon || "STANDARD");
Ausführen mit
node main.jsAusgabe
Shipping: 2.99 EUR
Delivery: standard
Coupon: none
Note: no note
Gift wrap: offered
Label: STANDARD- 42.5 besteht total >= 50 nicht, aber total >= 20, also läuft der zweite Block, und das else wird übersprungen.
- express ist false, also ist !express true.
- Der leere Gutschein ist falsy: Der else-Block läuft, und || ersetzt ihn durch "STANDARD".
- total > 40 ist true, also geht && weiter und liefert seinen zweiten Wert, "offered".
Ändern und ausführen
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den JavaScript-Runner herunter (bis zu 0.1 MB) und speichert ihn im Cache. Ihr Code läuft in der eigenen Engine Ihres Browsers und bleibt auf Ihrem Gerät.
Übungen
Übung 1 von 2
Den Wetterbericht reparieren
Der Bericht nennt 24 Grad mild und empfiehlt an einem trockenen Tag einen Schirm. Bringen Sie die else-if-Kette in die richtige Reihenfolge, sodass über 20 Grad It is warm. erscheint, und reparieren Sie die zweite Bedingung, die raining setzt, statt es zu lesen. Das Programm soll It is warm. und dann No umbrella needed. ausgeben.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den JavaScript-Runner herunter (bis zu 0.1 MB) und speichert ihn im Cache. Ihr Code läuft in der eigenen Engine Ihres Browsers und bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
Die Kette hält bei der ersten wahren Bedingung an. Ist 24 > 10 wahr?
Hinweis 2
Setzen Sie die engere Prüfung, temperature > 20, an den Anfang und verschieben Sie It is mild. in das else if.
Hinweis 3
raining = true speichert true in raining. Um den Wert zu lesen, schreiben Sie if (raining).
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
// A weather report for one day.
const temperature = 24;
let raining = false;
if (temperature > 20) {
console.log("It is warm.");
} else if (temperature > 10) {
console.log("It is mild.");
} else {
console.log("It is cold.");
}
if (raining) {
console.log("Take an umbrella.");
} else {
console.log("No umbrella needed.");
}
Auf dem eigenen Computer ausführen
Installieren Sie ECMAScript 2026 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.js
// A weather report for one day.
const temperature = 24;
let raining = false;
if (temperature > 10) {
console.log("It is mild.");
} else if (temperature > 20) {
console.log("It is warm.");
} else {
console.log("It is cold.");
}
if (raining = true) {
console.log("Take an umbrella.");
} else {
console.log("No umbrella needed.");
}
main.test.js
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {runMain} from './learnrun.js';
const lines = async () => (await runMain()).trimEnd().split('\n');
test('gibt zwei Zeilen aus', async () => {
const got = await lines();
assert.equal(got.length, 2, `das Programm gab ${got.length} Zeile(n) aus, erwartet: 2`);
});
test('24 Grad sind warm', async () => {
const got = await lines();
assert.equal(got[0], 'It is warm.', `die erste Zeile ist ${JSON.stringify(got[0])}, erwartet: "It is warm."`);
});
test('ein trockener Tag braucht keinen Schirm', async () => {
const got = await lines();
assert.equal(got[1], 'No umbrella needed.', `die zweite Zeile ist ${JSON.stringify(got[1])}, erwartet: "No umbrella needed."`);
});
package.json
{
"type": "module"
}
package.json sagt Node.js, dass die .js-Dateien Module sind; lassen Sie die Datei im Ordner.
Programm ausführen:
node main.jsPrüfungen ausführen (learnrun.js muss im selben Ordner liegen):
node --testlearnrun.js herunterladenÜbung 2 von 2
Standardwerte, die die Null behalten
Jemand hat die Lautstärke 0 und einen leeren Namen gespeichert, aber kein Farbschema. 0 ist eine echte Lautstärke und muss bleiben; ein leerer Name bedeutet keinen Namen und soll zu Guest werden. Ändern Sie die Operatoren so, dass das Programm volume: 0, dann name: Guest, dann theme: light ausgibt. Ändern Sie die gespeicherten Werte nicht.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den JavaScript-Runner herunter (bis zu 0.1 MB) und speichert ihn im Cache. Ihr Code läuft in der eigenen Engine Ihres Browsers und bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
Führen Sie es zuerst aus: Welche Zeile ist falsch, und ist ihr gespeicherter Wert 0, "" oder undefined?
Hinweis 2
|| ersetzt jeden falsy-Wert, auch 0. ?? ersetzt nur null und undefined.
Hinweis 3
Die Lautstärke braucht ??, der Name ||. Beim Schema funktioniert beides, denn undefined wird von beiden ersetzt.
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
// Settings saved by the user.
const savedVolume = 0;
const savedName = "";
const savedTheme = undefined;
const volume = savedVolume ?? 50;
const name = savedName || "Guest";
const theme = savedTheme ?? "light";
console.log("volume:", volume);
console.log("name:", name);
console.log("theme:", theme);
Auf dem eigenen Computer ausführen
Installieren Sie ECMAScript 2026 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.js
// Settings saved by the user.
const savedVolume = 0;
const savedName = "";
const savedTheme = undefined;
const volume = savedVolume || 50;
const name = savedName ?? "Guest";
const theme = savedTheme || "light";
console.log("volume:", volume);
console.log("name:", name);
console.log("theme:", theme);
main.test.js
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {runMain} from './learnrun.js';
const lines = async () => (await runMain()).trimEnd().split('\n');
test('behält die Lautstärke 0', async () => {
const got = await lines();
assert.equal(got[0], 'volume: 0', `die erste Zeile ist ${JSON.stringify(got[0])}, erwartet: "volume: 0"`);
});
test('ersetzt den leeren Namen durch Guest', async () => {
const got = await lines();
assert.equal(got[1], 'name: Guest', `die zweite Zeile ist ${JSON.stringify(got[1])}, erwartet: "name: Guest"`);
});
test('verwendet das helle Schema, wenn keines gespeichert ist', async () => {
const got = await lines();
assert.equal(got[2], 'theme: light', `die dritte Zeile ist ${JSON.stringify(got[2])}, erwartet: "theme: light"`);
});
test('gibt genau drei Zeilen aus', async () => {
const got = await lines();
assert.equal(got.length, 3, `das Programm gab ${got.length} Zeile(n) aus, erwartet: 3`);
});
package.json
{
"type": "module"
}
package.json sagt Node.js, dass die .js-Dateien Module sind; lassen Sie die Datei im Ordner.
Programm ausführen:
node main.jsPrüfungen ausführen (learnrun.js muss im selben Ordner liegen):
node --testlearnrun.js herunterladenHäufige Fehler
elseif in einem Wort
const size = 8;
if (size > 10) {
console.log("large");
} elseif (size > 5) {
console.log("medium");
}
Was Node.js ausgibt
SyntaxError: Unexpected token '{'Warum, und die Lösung
JavaScript kennt kein Schlüsselwort elseif: Es liest elseif (size > 5) als Aufruf von etwas namens elseif, und danach darf kein { folgen. Weil die Datei nicht gelesen werden kann, läuft keine Zeile. Schreiben Sie else if als zwei Wörter: } else if (size > 5) {.
Eine Bedingung ohne Klammern
const size = 8;
if size > 5 {
console.log("big");
}
Was Node.js ausgibt
SyntaxError: Unexpected identifier 'size'Warum, und die Lösung
Die Bedingung eines if muss in runden Klammern stehen: if (size > 5). Ohne sie erwartet JavaScript direkt nach if eine ( und hält beim Namen size an. Andere Sprachen erlauben die Form ohne Klammern, JavaScript nicht.
?? mit || gemischt, ohne Klammern
const saved = null;
const name = saved || undefined ?? "guest";
console.log(name);
Was Node.js ausgibt
SyntaxError: Unexpected token '??'Warum, und die Lösung
JavaScript rät nicht, ob || oder ?? zuerst ausgewertet werden soll, und verbietet deshalb, die beiden (oder ?? und &&) ohne Klammern zu mischen. Die ganze Datei lädt dann nicht. Setzen Sie Klammern, die sagen, was Sie meinen: (saved || undefined) ?? "guest", oder verwenden Sie nur einen Operator.
JavaScript im Browser: die eigene Engine Ihres Browsers in einem abgeschotteten Worker. Syntaxfehler findet acorn 8.18.0, MIT. Lizenz und Quellcode
Abschlussquiz
5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.
Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.