Aufwärmen · Aufgabe 1 von 7
Zum Aufwärmen: Was gibt dieser Code aus?
console.log(7 / 2);// B2.2 · ca. 30 Min. · Einstieg
Nach dieser Lektion rechnen Sie mit allen Rechenoperatoren, runden Zahlen so, wie Sie es meinen, und gehen mit NaN, Infinity und Zahlen in Text um.
Danach können Sie
Aufwärmen · Aufgabe 1 von 7
console.log(7 / 2);Vorhersagen · Aufgabe 2 von 7
console.log(0.1 + 0.2);Üben · Aufgabe 3 von 7
console.log(17 ____ 5);Üben · Aufgabe 4 von 7
Üben · Aufgabe 5 von 7
const price = (19.999).toFixed(2);
console.log(price + 1);Denksport · Aufgabe 6 von 7
console.log((1.005).toFixed(2));Anwenden · Aufgabe 7 von 7
Prüfen Sie Ihr Ergebnis anhand dieser Liste
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
Drei Freunde teilen eine Rechnung über 87.40 Euro. Der genaue Anteil hat einen langen Schwanz aus Ziffern, also formatiert das Programm ihn mit toFixed, rundet ihn mit Math.ceil auf und verteilt mit % zehn Gäste auf Vierertische. Zum Schluss liest es zwei Zahlen aus Text und zeigt eine Rechnung, die scheitert. Führen Sie es aus und ändern Sie dann people auf 4.
main.js
// Splitting a restaurant bill between friends.
const bill = 87.4;
const people = 3;
const share = bill / people;
console.log("exact share:", share);
console.log("rounded:", share.toFixed(2), typeof share.toFixed(2));
console.log("each pays, whole euros:", Math.ceil(share));
console.log("tip at 10%:", Math.round(bill * 0.1));
console.log("tables of 4 for 10 guests:", Math.ceil(10 / 4), "with", 10 % 4, "at the last");
console.log("from text:", Number.parseFloat("12.5%"), Number.parseInt("3 guests", 10));
console.log("broken:", 0 / 0, Number.isNaN(0 / 0), 1 / 0);
Ausführen mit
node main.jsAusgabe
exact share: 29.133333333333336
rounded: 29.13 string
each pays, whole euros: 30
tip at 10%: 9
tables of 4 for 10 guests: 3 with 2 at the last
from text: 12.5 3
broken: NaN true InfinityTab 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.
Übung 1 von 2
Drei Gewinner teilen sich 100 Euro. Geben Sie drei Zeilen aus: Each: 33.33 (der genaue Anteil mit zwei Nachkommastellen), Round up: 34 (der Anteil, auf ganze Euro aufgerundet) und Remainder: 1 (die Euro, die übrig bleiben, wenn jeder ganze Euro bekommt). Berechnen Sie jeden Wert aus prize und winners.
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.
(prize / winners).toFixed(2) ergibt "33.33". Die Klammern sorgen dafür, dass zuerst geteilt wird.
Math.ceil rundet immer auf, aus 33.33… wird also 34.
Der Rest nach dem Teilen ist prize % winners.
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
const prize = 100;
const winners = 3;
console.log("Each:", (prize / winners).toFixed(2));
console.log("Round up:", Math.ceil(prize / winners));
console.log("Remainder:", prize % winners);
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
const prize = 100;
const winners = 3;
// Print three lines:
// Each: 33.33
// Round up: 34
// Remainder: 1
console.log("Each:", prize / winners);
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 den Anteil mit zwei Nachkommastellen aus', async () => {
const got = await lines();
assert.equal(got[0], 'Each: 33.33', `die erste Zeile ist ${JSON.stringify(got[0])}, erwartet: "Each: 33.33"`);
});
test('gibt den aufgerundeten Anteil aus', async () => {
const got = await lines();
assert.equal(got[1], 'Round up: 34', `die zweite Zeile ist ${JSON.stringify(got[1])}, erwartet: "Round up: 34"`);
});
test('gibt den Rest aus', async () => {
const got = await lines();
assert.equal(got[2], 'Remainder: 1', `die dritte Zeile ist ${JSON.stringify(got[2])}, erwartet: "Remainder: 1"`);
});
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
Drei Etiketten wurden als Text gelesen: "12.5 kg", "7 items" und "abc". Number() macht aus allen dreien NaN. Geben Sie weight: 12.5 mit Number.parseFloat aus, count: 7 mit Number.parseInt (Basis 10) und invalid: true, indem Sie mit Number.isNaN prüfen, ob parseFloat bei "abc" gescheitert ist.
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.
Number.parseFloat(weightText) liest 12.5 und stoppt am Leerzeichen vor kg.
Number.parseInt(countText, 10) liest die ganze Zahl 7.
Number.parseFloat("abc") ist NaN, und Number.isNaN(NaN) ist true.
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
const weightText = "12.5 kg";
const countText = "7 items";
const badText = "abc";
console.log("weight:", Number.parseFloat(weightText));
console.log("count:", Number.parseInt(countText, 10));
console.log("invalid:", Number.isNaN(Number.parseFloat(badText)));
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
const weightText = "12.5 kg";
const countText = "7 items";
const badText = "abc";
console.log("weight:", Number(weightText));
console.log("count:", Number(countText));
console.log("invalid:", Number(badText));
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('liest das Gewicht', async () => {
const got = await lines();
assert.equal(got[0], 'weight: 12.5', `die erste Zeile ist ${JSON.stringify(got[0])}, erwartet: "weight: 12.5"`);
});
test('liest die Anzahl', async () => {
const got = await lines();
assert.equal(got[1], 'count: 7', `die zweite Zeile ist ${JSON.stringify(got[1])}, erwartet: "count: 7"`);
});
test('meldet das ungültige Etikett', async () => {
const got = await lines();
assert.equal(got[2], 'invalid: true', `die dritte Zeile ist ${JSON.stringify(got[2])}, erwartet: "invalid: true"`);
});
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 herunterladenconst price = "4.5";
console.log(price.toFixed(2));
Was Node.js ausgibt
TypeError: price.toFixed is not a functionWarum, und die Lösung
toFixed ist eine Methode von Zahlen, und "4.5" in Anführungszeichen ist ein String, der kein toFixed hat. Das passiert oft bei Werten aus einem Formular oder bei einem Wert, der schon einmal durch toFixed gegangen ist. Wandeln Sie zuerst um: Number(price).toFixed(2) gibt 4.50 aus.
console.log(5.toFixed(2));
Was Node.js ausgibt
SyntaxError: Invalid or unexpected tokenWarum, und die Lösung
JavaScript liest den Punkt nach der 5 als Beginn der Nachkommastellen, 5.toFixed ist also eine Zahl mit Buchstaben in den Nachkommastellen, die sich nicht lesen lässt. Nichts in der Datei läuft. Setzen Sie die Zahl in Klammern, (5).toFixed(2), oder speichern Sie sie zuerst in einer Variablen: const n = 5; n.toFixed(2). Beides gibt 5.00 aus.
const share = 100 / 3;
console.log(share.toFixed(101));
Was Node.js ausgibt
RangeError: toFixed() digits argument must be between 0 and 100Warum, und die Lösung
toFixed akzeptiert 0 bis 100 Nachkommastellen; alles andere stoppt das Programm mit einem RangeError, dem Fehler für einen Wert außerhalb des erlaubten Bereichs. Für Geld wollen Sie meist zwei Stellen. Viele Stellen machen die Zahl auch nicht genauer: Sie zeigen nur mehr vom Fehler der binären Speicherung.
JavaScript im Browser: die eigene Engine Ihres Browsers in einem abgeschotteten Worker. Syntaxfehler findet acorn 8.18.0, MIT. Lizenz und Quellcode
5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.
Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.