3. Unterrichtsblock: Variablen, Datentypen und Rechnen

Heute lernst du, wie man in JavaScript Werte speichert, mit ihnen rechnet und sie vergleicht. Du arbeitest lokal in einem Projektordner und siehst Ergebnisse in der Browser-Konsole und auf der Seite. Neben jedem Beispiel siehst du, was dabei herauskommt.
Projekt vorbereiten
Lege einen Ordner js-projekt mit zwei Dateien an: index.html und app.js. Das Skript bindest du wie in Block 2 als externe Datei ein.
<!-- index.html -->
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>JavaScript üben</title>
</head>
<body>
<h1>JavaScript üben</h1>
<p id="ausgabe"></p>
<script src="app.js"></script>
</body>
</html>
// app.js
console.log("app.js wurde geladen");
Öffne index.html im Browser und drücke F12. Im Reiter Konsole steht jetzt die Ausgabe von console.log(). Dort erscheinen auch Fehlermeldungen.
Variablen: Werte speichern
Eine Variable ist ein Name für einen gespeicherten Wert. Mit let legst du eine Variable an, deren Wert sich ändern darf. Mit const legst du eine Konstante an, deren Wert gleich bleibt.
const name = "Lina"; // bleibt gleich
let alter = 17; // kann sich ändern
alter = 18; // neuer Wert: erlaubt
console.log(name, alter);
const. Schreibe let nur, wenn sich der Wert wirklich ändert. Das alte var schauen wir uns gleich an, wir schreiben es aber nicht selbst.Namen für Variablen
| Name | Gültig? | Grund |
|---|---|---|
alter, vorName, _temp, preis2 | ja | Buchstaben, Ziffern, _ und $ sind erlaubt |
2plaetze | nein | beginnt mit einer Ziffer |
mein-name | nein | Bindestrich ist ein Minuszeichen |
let | nein | reserviertes Schlüsselwort |
Alter und alter | ja, aber verschieden | Groß- und Kleinschreibung zählt |
Üblich ist die camelCase-Schreibweise: preisProStueck. Wähle Namen, die sagen, was gespeichert ist.
Und was ist mit var?
Bevor es let und const gab (vor 2015), benutzte man var. Du findest es in vielen älteren Beispielen und Tutorials im Netz. Es funktioniert, verhält sich aber an drei Stellen anders und führt leicht zu Fehlern, die man nicht bemerkt:
let / const | var | |
|---|---|---|
| Doppelt anlegen | Fehler (gut, du merkst den Tippfehler) | kein Fehler, der alte Wert wird still überschrieben |
| Vor der Deklaration benutzen | Fehler | liefert undefined, ohne Fehler |
| Gültigkeit | nur im { }-Block | ignoriert { }-Blöcke, gilt in der ganzen Funktion |
var alter = 17;
var alter = 18; // kein Fehler, obwohl doppelt angelegt
console.log(alter); // 18
console.log(vorname); // undefined, nicht einmal ein Fehler
var vorname = "Lina";
Dasselbe mit let: Hier meldet JavaScript beide Fehler sofort und du findest sie gleich. Die zwei Beispiele laufen getrennt, weil schon der erste Fehler das Skript stoppt.
let alter = 17;
let alter = 18; // Fehler: Name schon vergeben
console.log(alter);
console.log(vorname); // Fehler: benutzt, bevor es angelegt wurde
let vorname = "Lina";
var erkennen und lesen können. Schreibe aber selbst nur const und let. Mehr dazu, wo eine Variable überhaupt gilt, lernst du im nächsten Block (Gültigkeitsbereich).Aufgabe 1 – Dein Steckbrief
Zeit: ca. 5 Minuten
- Lege in
app.jsVariablen für deinen Namen (const), dein Alter (let) und dein Lieblingsfach (const) an. - Gib alle drei mit
console.log()aus. - Erhöhe dein Alter um 1 und gib es erneut aus.
- Gib deinen Namen zusätzlich mit
document.getElementById("ausgabe").innerHTMLauf der Seite aus.
Fehlermeldungen lesen
Fehler gehören dazu. Die Konsole zeigt dir, was schiefgelaufen ist: den Fehlertyp, eine Erklärung und die Datei mit Zeilennummer. Drei typische Fehler:
const pi = 3.14;
pi = 3; // const neu zuweisen
let punkte = 10;
let punkte = 20; // Namen doppelt angelegt
console.log(gesamtpreis); // gibt es nicht
Aufgabe 2 – Fehler provozieren
Zeit: ca. 5 Minuten
- Baue die drei Fehler aus den Beispielen nacheinander in
app.jsein und öffne jedes Mal die Konsole. - Notiere dir für jeden Fehler Typ, Meldung und Zeilennummer als Kommentar.
- Lege zum Vergleich eine Variable zweimal mit
varan. Was passiert diesmal? - Repariere den Code wieder.
Datentypen
Jeder Wert hat einen Datentyp. Mit typeof fragst du ihn ab.
| Wert | Datentyp | Beschreibung |
|---|---|---|
"Lina", 'Hallo' | string | Text in Anführungszeichen |
42, 3.14 | number | Ganz- und Kommazahlen (mit Punkt, ohne Anführungszeichen) |
true, false | boolean | Wahr oder falsch |
undefined | undefined | Variable ohne Wert |
const name = "Lina";
const alter = 17;
const istSchueler = true;
let ohneWert;
console.log(typeof name);
console.log(typeof alter);
console.log(typeof istSchueler);
console.log(typeof ohneWert);
Eingaben aus Formularfeldern sind immer Text. Probiere es aus:
const eingabe = "42";
console.log(typeof eingabe); // string
console.log(typeof Number(eingabe)); // number
Text und Zahl mischen
Der Operator + rechnet bei Zahlen und hängt bei Text zusammen. Sobald ein Text dabei ist, wird zusammengehängt.
console.log(5 + 5); // 10
console.log("5" + 5); // 55
console.log("Hallo" + 5); // Hallo5
console.log("5" - 2); // 3 (Minus gibt es nur für Zahlen)
console.log(Number("5") + 5); // 10
Aufgabe 3 – Text plus Zahl
Zeit: ca. 5 Minuten
- Sage für
5 + 5 + "5"und"5" + 5 + 5voraus, was herauskommt. Prüfe dann in der Konsole. - Lege
const zahlAlsText = "8"an. Rechne damitzahlAlsText + 2undNumber(zahlAlsText) + 2. Erkläre den Unterschied als Kommentar.
Rechnen
Mit Zahlen rechnest du mit den arithmetischen Operatoren. Es gilt Punkt vor Strich, mit Klammern steuerst du die Reihenfolge.
| Operator | Bedeutung | Beispiel | Ergebnis |
|---|---|---|---|
+ | Addition | 7 + 2 | 9 |
- | Subtraktion | 7 - 2 | 5 |
* | Multiplikation | 7 * 2 | 14 |
/ | Division | 7 / 2 | 3.5 |
% | Rest einer Division | 7 % 2 | 1 |
** | Potenz | 2 ** 3 | 8 |
++ | um 1 erhöhen | zahl++ | zahl + 1 |
-- | um 1 verringern | zahl-- | zahl – 1 |
Probiere mit eigenen Zahlen aus:
% ist nützlich: zahl % 2 === 0 ist bei geraden Zahlen wahr. minuten % 60 liefert die Restminuten, wenn man Stunden abzieht.Kurzschreibweisen für Zuweisungen
Statt punkte = punkte + 5 schreibt man kürzer punkte += 5.
| Operator | Beispiel | Bedeutet |
|---|---|---|
= | x = 5 | x bekommt den Wert 5 |
+= | x += 5 | x = x + 5 |
-= | x -= 5 | x = x - 5 |
*= | x *= 5 | x = x * 5 |
/= | x /= 5 | x = x / 5 |
%= | x %= 5 | x = x % 5 |
let punkte = 10;
punkte += 5; // 15
punkte *= 2; // 30
console.log(punkte);
Aufgabe 4 – Warenkorb
Zeit: ca. 10 Minuten
Berechne einen kleinen Einkauf.
- Lege
const preisBrot = 2.5,const preisMilch = 1.2undconst mengeBrot = 2,const mengeMilch = 3an. - Berechne den Gesamtpreis in der Variable
gesamt. - Gib auf der Seite aus: „Gesamtpreis: 8.6 Euro“ (verwende
document.getElementById("ausgabe").innerHTML). - Runde die Ausgabe mit
gesamt.toFixed(2)auf zwei Nachkommastellen.
Vergleichen
Vergleiche liefern immer einen Wahrheitswert: true oder false. Wir benutzen den strengen Vergleich ===: Er prüft Wert und Datentyp.
| Operator | Bedeutung | Beispiel (x ist 5) | Ergebnis |
|---|---|---|---|
=== | gleich (Wert und Typ) | x === 5 | true |
=== | gleich (Wert und Typ) | x === "5" | false |
!== | ungleich | x !== 8 | true |
>, < | größer, kleiner | x > 3 | true |
>=, <= | größer oder gleich, kleiner oder gleich | x <= 4 | false |
const x = 5;
console.log(x === 5); // true
console.log(x === "5"); // false, denn "5" ist Text
console.log(x == "5"); // true, weil == den Typ ignoriert
console.log(x > 3); // true
=== und !==. Das einfache == wandelt Typen automatisch um und liefert oft überraschende Ergebnisse. Du siehst es aber in fremdem Code.Eigenheiten von JavaScript
JavaScript hat einige Eigenheiten, die auf den ersten Blick wie Fehler aussehen. Es sind Regeln der Sprache, und man muss sie kennen, sonst wundert man sich. Sage bei jedem Ausdruck zuerst voraus, was herauskommt, und klicke dann auf „Ergebnis zeigen“.
Text und Zahlen
Das + hängt Text zusammen oder rechnet. Ein + vor einem Wert versucht, daraus eine Zahl zu machen. Aus "a" wird dabei NaN („Not a Number“, keine Zahl).
console.log("b" + "a" + +"a" + "a");
| Ausdruck (erst selbst vorhersagen!) | Ergebnis |
|---|---|
"b" + "a" + +"a" + "a" | |
+"a" | |
true + true |
Kommazahlen sind nur Näherungen
Der Computer rechnet im Zweiersystem. Viele Dezimalzahlen wie 0,1 lassen sich dort nicht genau darstellen. Deshalb ist 0.1 + 0.2 nicht exakt 0,3.
| Ausdruck (erst selbst vorhersagen!) | Ergebnis |
|---|---|
0.1 + 0.2 | |
0.1 + 0.2 === 0.3 | |
(0.1 + 0.2).toFixed(2) | |
Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON |
===. Runde mit toFixed() oder prüfe, ob der Unterschied winzig ist (Number.EPSILON).Division durch null und NaN
JavaScript bricht bei einer Division durch null nicht mit einem Fehler ab. Es liefert Infinity (unendlich) oder NaN.
| Ausdruck (erst selbst vorhersagen!) | Ergebnis |
|---|---|
1 / 0 | |
-1 / 0 | |
0 / 0 | |
"abc" * 2 | |
NaN === NaN | |
typeof NaN | |
Number.isNaN(0 / 0) |
NaN ist mit nichts gleich, auch nicht mit sich selbst. Ob ein Wert NaN ist, prüfst du mit Number.isNaN(wert).Abschlussaufgaben
Jetzt wird es anspruchsvoller. Nimm dir Zeit, es müssen nicht alle Aufgaben geschafft werden.
Aufgabe 5 – Preisrechner
Zeit: ca. 15 Minuten
Ein Laden gibt Rabatt. Berechne den Endpreis.
- Lege die Variablen
nettopreis = 80,rabattProzent = 15undmwstProzent = 19an. - Berechne den Rabatt in Euro und den Preis nach Rabatt.
- Berechne darauf die Mehrwertsteuer und den Bruttopreis.
- Gib alle Zwischenergebnisse in einer übersichtlichen Liste auf der Seite aus, auf zwei Nachkommastellen gerundet.
Zusatz: Füge eine Variable stueckzahl hinzu, sodass der Preis für mehrere Stück berechnet wird.
Aufgabe 6 – Transfer: Sekunden umrechnen
Zeit: ca. 20 Minuten
Ein Videoplayer kennt nur die Gesamtlänge in Sekunden. Er soll sie als Stunden, Minuten und Sekunden anzeigen. Du brauchst dafür nur, was du heute gelernt hast. Die Lösung musst du dir selbst überlegen.
| Gesamtlänge | Anzeige |
|---|---|
3725 | 1 h 2 min 5 s |
59 | 0 h 0 min 59 s |
3600 | 1 h 0 min 0 s |
86399 | 23 h 59 min 59 s |
- Lege
const gesamt = 3725an und berechnestunden,minutenundsekundenjeweils als ganze Zahlen. - Gib das Ergebnis als Text auf der Seite aus, zum Beispiel „1 h 2 min 5 s“.
- Teste mit den Werten aus der Tabelle und mit
0. - Baue ein Eingabefeld und einen Button, damit die Länge eingegeben werden kann. Denke daran, was ein Eingabefeld liefert.
Tipp: Eine Division wie 3725 / 3600 liefert eine Kommazahl. Überlege, wie du mit dem Rest (%) erst das Überzählige abziehst und dann ganze Stunden erhältst.
Zusatz: Ein Kassenautomat gibt Wechselgeld in Cent aus. Berechne für 387 Cent, wie viele 2-Euro-Münzen, 1-Euro-Münzen und 50-Cent-Münzen ausgegeben werden und wie viele Cent übrig bleiben.
Kurz zusammengefasst
Variablen speichern Werte, const ist der Standard und let nur für Werte, die sich ändern. Jeder Wert hat einen Datentyp, und mit Text und Zahlen ist Vorsicht geboten. Rechnen geht mit + - * / % **, vergleichen mit ===. Die Konsole zeigt dir Ergebnisse und Fehler.
