5. Unterrichtsblock: Entscheidungen treffen
Bisher läuft dein Programm immer von oben nach unten. Heute lernst du, wie es Entscheidungen trifft: Es führt Code nur aus, wenn eine Bedingung zutrifft. Arbeite weiter in deinem js-projekt.
Boolesche Werte
Ein boolescher Wert ist entweder true (wahr) oder false (falsch). Jeder Vergleich aus dem letzten Block liefert einen booleschen Wert. Er ist die Grundlage jeder Entscheidung.
const alter = 17;
const istVolljaehrig = alter >= 18;
console.log(istVolljaehrig); // false
console.log(alter === 17); // true
Wahr oder falsch: nicht nur true und false
JavaScript wertet auch andere Werte als wahr oder falsch, wenn eine Bedingung gefragt ist. Falsch sind nur: false, 0, "" (leerer Text), null, undefined und NaN. Alles andere ist wahr. Mit Boolean() kannst du es testen:
console.log(Boolean("")); // false
console.log(Boolean("Hallo")); // true
console.log(Boolean(0)); // false
console.log(Boolean("0")); // true, denn "0" ist ein Text
Tipp: Lösche den Text komplett und prüfe erneut.
Logische Operatoren
Mit logischen Operatoren verbindest du mehrere Bedingungen.
| Operator | Name | Bedeutung | Beispiel |
|---|---|---|---|
&& | UND | wahr, wenn beide Seiten wahr sind | alter >= 18 && hatAusweis |
|| | ODER | wahr, wenn mindestens eine Seite wahr ist | istSamstag || istSonntag |
! | NICHT | dreht wahr und falsch um | !istRegen |
const alter = 20;
const hatAusweis = true;
const istWochenende = false;
console.log(alter >= 18 && hatAusweis); // true
console.log(istWochenende || alter < 18); // false
console.log(!istWochenende); // true
Schalte A und B ein und aus und beobachte die Ergebnisse:
Klicke A oder B an.
! zuerst, dann &&, dann ||. Setze im Zweifel Klammern: (a || b) && c.Aufgabe 1 – Wahrheitswerte vorhersagen
Zeit: ca. 5 Minuten
- Lege
const a = true,const b = false,const c = truean. - Sage voraus, was
a && b,a || b,!a,a && (b || c)und!(a && c)ergeben. - Prüfe mit
console.log().
if, else und else if
Mit if führst du einen Codeblock nur aus, wenn die Bedingung wahr ist. Mit else legst du fest, was sonst passiert. Mit else if prüfst du weitere Bedingungen nacheinander.
const alter = 16;
if (alter >= 18) {
console.log("Du bist volljährig.");
} else {
console.log("Du bist noch nicht volljährig.");
}
const stunde = 14;
if (stunde < 10) {
console.log("Guten Morgen");
} else if (stunde < 18) {
console.log("Guten Tag");
} else {
console.log("Guten Abend");
}
- Die Bedingung steht in runden Klammern, der Code in geschweiften.
- Die Bedingungen werden von oben nach unten geprüft. Der erste Treffer gewinnt, der Rest wird übersprungen.
elsebraucht keine Bedingung und steht immer zuletzt.
if (x = 5) mit einem Gleichheitszeichen weist zu, statt zu vergleichen. Schreibe if (x === 5).Variablen im Block
Was du mit let oder const in den geschweiften Klammern eines if anlegst, gibt es nur dort. Das kennst du schon von lokalen Variablen in Funktionen.
if (true) {
const gruss = "Hallo";
console.log(gruss); // Hallo
}
console.log(gruss); // Fehler: gruss gibt es hier nicht mehr
Aufgabe 2 – Volljährig?
Zeit: ca. 5 Minuten
- Lege eine Variable
alteran. - Gib mit
ifundelse„Volljährig“ oder „Minderjährig“ aus. - Ergänze eine Stufe mit
else if: Ab 16 „Jugendlicher“, ab 18 „Volljährig“, darunter „Kind“. - Teste mit den Werten 12, 16, 17, 18 und 40. Warum ist die Reihenfolge der Bedingungen wichtig?
switch: viele Fälle, ein Wert
Wenn du einen Wert mit vielen festen Möglichkeiten vergleichst, ist switch übersichtlicher als eine lange else if-Kette.
const tag = "Mi";
switch (tag) {
case "Mo":
console.log("Wochenstart");
break;
case "Mi":
console.log("Wochenmitte");
break;
case "Fr":
console.log("Fast Wochenende");
break;
default:
console.log("ein normaler Tag");
}
- Jeder Fall beginnt mit
caseund endet mitbreak. Ohnebreakläuft der nächste Fall einfach weiter. defaultgilt, wenn kein Fall passt.switchvergleicht streng (===).
Kurzform: der bedingte Operator
Für eine einfache Entscheidung mit zwei Ergebnissen gibt es eine Kurzschreibweise mit ? und ::
const alter = 20;
const status = alter >= 18 ? "volljährig" : "minderjährig";
console.log(status); // volljährig
Aufgabe 3 – Wochentag
Zeit: ca. 5 Minuten
- Lege eine Variable
tagmit einem Kürzel ("Mo"bis"So") an. - Schreibe ein
switch: Für"Sa"und"So"soll „Wochenende“ erscheinen, für"Fr"„Fast geschafft“, sonst „Arbeitstag“. - Tipp: Zwei Fälle können sich einen Block teilen, wenn du das
breakbeim ersten weglässt.
Abschlussaufgaben
Jetzt wird es anspruchsvoller. Nimm dir Zeit, es müssen nicht alle Aufgaben geschafft werden.
Aufgabe 4 – Kinopreis
Zeit: ca. 15 Minuten
Der Kinopreis hängt von mehreren Bedingungen ab:
- Normalpreis: 10 Euro
- Kinder unter 12 zahlen 6 Euro
- Schüler und Studenten zahlen 8 Euro
- Dienstag ist Kinotag: Alle zahlen 2 Euro weniger
- Lege
alter,istSchueler(true/false) undtagals Variablen an. - Berechne den Preis mit
if,else ifund&&/||nach den Regeln. - Gib den Preis auf der Seite aus und teste mindestens fünf verschiedene Kombinationen.
- Packe die Berechnung in eine Funktion
berechneKinopreis(alter, istSchueler, tag)mitreturn.
Zusatz: Baue Eingabefelder und einen Button, damit jemand die Daten eingeben kann.
Aufgabe 5 – Schaltjahr
Zeit: ca. 15 Minuten
Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, aber nicht durch 100, außer es ist auch durch 400 teilbar. Also ist 2024 ein Schaltjahr, 1900 nicht, 2000 schon.
- Schreibe eine Funktion
istSchaltjahr(jahr), dietrueoderfalsezurückgibt. Tipp:%liefert den Rest, und ein Jahr ist durch 4 teilbar, wennjahr % 4 === 0ist. - Teste mit 1900, 2000, 2023, 2024 und 2100.
- Gib für jedes Jahr „… ist ein Schaltjahr“ oder „… ist kein Schaltjahr“ aus.
Zusatz: Schreibe ein Zahlenraten: Die Geheimzahl steht in einer Variablen, der Tipp kommt aus einem Eingabefeld. Gib „zu klein“, „zu groß“ oder „richtig“ aus.
Kurz zusammengefasst
Vergleiche liefern true oder false. Mit &&, || und ! verknüpfst du Bedingungen. if, else if und else entscheiden, welcher Code läuft, und switch ist praktisch, wenn du einen Wert mit vielen Fällen vergleichst.

