Aufwärmen · Aufgabe 1 von 7
// B1.4 · ca. 30 Min. · Einstieg
Die Konsole und der Debugger
Nach dieser Lektion wählen Sie für jede Meldung die passende console-Methode, finden einen Logikfehler mit beschrifteten Zwischenwerten und halten ein Programm mit debugger oder node inspect an, um seine Werte anzusehen.
Danach können Sie
- console.log, info, warn, error oder table wählen und sagen, ob die Methode auf stdout oder stderr schreibt
- Einen Logikfehler finden, indem Sie Schritt für Schritt beschriftete Werte ausgeben
- Ein Programm mit einer debugger-Anweisung anhalten, in den Browser-DevTools und mit node inspect
Vorhersagen · Aufgabe 2 von 7
Sagen Sie es vorher, bevor Sie weiterlesen. Das Ergebnis sollte 24 sein, aber das Programm gibt total: 14 aus. Was gibt das erste console.log aus?
const price = 4; const count = 3; const subtotal = price + count; console.log("subtotal:", subtotal); const total = subtotal * 2; console.log("total:", total);Üben · Aufgabe 3 von 7
Ergänzen Sie die Methode, damit die Liste als Tabelle gezeichnet wird, mit einer Spalte (index) und einer Spalte Values.
console.____(["tea", "coffee"]);console.(["tea", "coffee"]);Üben · Aufgabe 4 von 7
Ordnen Sie jedem Stück Code zu, was es in Node.js tut.
Üben · Aufgabe 5 von 7
Ein Programm gibt eine falsche Summe aus und keinen Fehler. Bringen Sie die Schritte einer Suche mit Ausgaben in die richtige Reihenfolge.
- 1.Erneut ausführen und den ersten falschen Wert suchen
- 2.Noch einmal ausführen, dann die zusätzlichen Ausgaben entfernen
- 3.Das Programm ausführen und das falsche Ergebnis notieren
- 4.Den Wert jedes Schritts mit einer Beschriftung ausgeben
- 5.Die Zeile korrigieren, die diesen Wert berechnet
Denksport · Aufgabe 6 von 7
Knobelaufgabe. Sie führen dies mit node main.js aus, ohne angeschlossenen Debugger. Was gibt es aus, bevor es stoppt?
console.log("start"); debugger; console.log("x is", x); console.log("end");Anwenden · Aufgabe 7 von 7
Mini-Aufgabe. Dieses Programm soll den Lohn nach 10 % Steuer für 6 Stunden zu 12 pro Stunde ausgeben (64.8), gibt aber etwas anderes aus: const hours = 6; const rate = 12; const pay = hours + rate; const tax = pay / 10; console.log("after tax:", pay - tax);. Fügen Sie nach jedem Schritt ein beschriftetes console.log ein, finden Sie den ersten falschen Wert, korrigieren Sie diese Zeile und führen Sie es erneut aus.
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
Eine Café-Rechnung, verfolgt
Wieder die Café-Rechnung, jetzt mit einer console-Methode für jede Aufgabe. console.info kündigt die Rechnung an, console.table zeigt die Bestellung als Zeilen und Spalten, beschriftete console.log-Zeilen verfolgen jeden Schritt der Summe, und console.warn meldet ein Problem auf stderr, weshalb es in der Ausgabe unten fehlt. Die Bestellung ist eine Liste von Datensätzen: {item: "coffee", …} ist ein Objekt, das Modul B5 behandelt; hier wird es nur ausgegeben.
main.js
// A café bill, with each step traced.
const items = [
{item: "coffee", price: 3.2, count: 2},
{item: "cake", price: 4.5, count: 1}
];
console.info("Bill for table", 4);
console.table(items);
const coffees = 3.2 * 2;
console.log("coffees:", coffees);
const total = coffees + 4.5;
console.log("total:", total);
console.warn("(printer: paper low)");
Ausführen mit
node main.jsAusgabe
Bill for table 4
┌─────────┬──────────┬───────┬───────┐
│ (index) │ item │ price │ count │
├─────────┼──────────┼───────┼───────┤
│ 0 │ 'coffee' │ 3.2 │ 2 │
│ 1 │ 'cake' │ 4.5 │ 1 │
└─────────┴──────────┴───────┴───────┘
coffees: 6.4
total: 10.9- console.info gibt aus wie console.log, auf stdout.
- console.table macht eine Zeile pro Eintrag und eine Spalte pro Feld, dazu die Spalte (index).
- Die Beschriftungen coffees: und total: sagen Ihnen, aus welchem Schritt jede Zahl stammt.
- console.warn landet auf stderr: Ein Terminal zeigt es an, aber es gehört nicht zur Ausgabe oben.
Ä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
Jede Meldung auf ihrem Strom
Das Programm gibt vier Meldungen aus, alle mit console.log. Behalten Sie alle vier Meldungen, aber ändern Sie die Methoden: Loading the menu ist eine Information (console.info), Tea is sold out eine Warnung (console.warn), Menu items: 3 das Ergebnis (console.log) und Printer not found ein Fehler (console.error). Danach stehen nur noch die erste und die dritte Zeile auf stdout.
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
Nur der Methodenname ändert sich: Aus console.log("Tea is sold out") wird console.warn("Tea is sold out").
Hinweis 2
console.info schreibt auf stdout, wie console.log; console.warn und console.error schreiben auf stderr.
Hinweis 3
Löschen Sie keine Meldung: Warnung und Fehler erscheinen weiter im Terminal, nur auf stderr.
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
console.info("Loading the menu");
console.warn("Tea is sold out");
console.log("Menu items:", 3);
console.error("Printer not found");
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
console.log("Loading the menu");
console.log("Tea is sold out");
console.log("Menu items:", 3);
console.log("Printer not found");
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 die Information und das Ergebnis auf stdout aus', async () => {
const got = await lines();
assert.deepEqual(got, ['Loading the menu', 'Menu items: 3'], `stdout war ${JSON.stringify(got)}`);
});
test('hält die Warnung von stdout fern', async () => {
const got = await lines();
assert.ok(!got.includes('Tea is sold out'), 'Tea is sold out steht noch auf stdout: verwenden Sie console.warn');
});
test('hält den Fehler von stdout fern', async () => {
const got = await lines();
assert.ok(!got.includes('Printer not found'), 'Printer not found steht noch auf stdout: verwenden Sie console.error');
});
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
Den Durchschnitt verfolgen
Der Durchschnitt von 70, 80 und 90 sollte 80 sein, aber das Programm gibt Average: 180 aus, ohne Fehler. Speichern Sie die Summe der drei Punktzahlen in einer eigenen Konstante sum und geben Sie sie mit der Beschriftung Sum: aus, sodass das Programm zuerst Sum: 240 ausgibt. Berechnen Sie dann den Durchschnitt aus sum und geben Sie Average: 80 aus.
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
Teilen Sie die lange Zeile in zwei: const sum = first + second + third; dann console.log("Sum:", sum);.
Hinweis 2
Stimmt Sum: 240, steckt der Fehler in der Division: In first + second + third / 3 wird nur third geteilt.
Hinweis 3
const average = sum / 3; teilt die ganze Summe.
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
const first = 70;
const second = 80;
const third = 90;
const sum = first + second + third;
console.log("Sum:", sum);
const average = sum / 3;
console.log("Average:", average);
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
const first = 70;
const second = 80;
const third = 90;
const average = first + second + third / 3;
console.log("Average:", average);
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 zuerst die Summe mit Beschriftung aus', async () => {
const got = await lines();
assert.equal(got[0], 'Sum: 240', `die erste Zeile ist ${JSON.stringify(got[0])}, erwartet: "Sum: 240"`);
});
test('gibt den richtigen Durchschnitt aus', async () => {
const got = await lines();
assert.equal(got[1], 'Average: 80', `die zweite Zeile ist ${JSON.stringify(got[1])}, erwartet: "Average: 80"`);
});
test('gibt genau zwei Zeilen aus', async () => {
const got = await lines();
assert.equal(got.length, 2, `das Programm gab ${got.length} Zeile(n) aus, erwartet: 2`);
});
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
Ein Tippfehler in einer console-Methode
const items = ["tea", "coffee"];
console.tabel(items);
Was Node.js ausgibt
TypeError: console.tabel is not a functionWarum, und die Lösung
console gibt es, aber es hat keine Methode namens tabel, und etwas aufzurufen, das keine Funktion ist, ist ein TypeError. Prüfen Sie die Schreibweise der Methode: console.table. Dasselbe gilt für console.lg, console.eror und Verwandte.
Einen Namen ausgeben, den es nicht gibt
const subtotal = 5;
console.log("subtotal:", subtotl);
Was Node.js ausgibt
ReferenceError: subtotl is not definedWarum, und die Lösung
Auch eine Ausgabezeile ist Code: Der Name, den Sie ausgeben, muss genau so geschrieben sein wie bei der Deklaration. Hier stimmt die Beschriftung, aber der Wert ist ein falsch geschriebener Name. Kopieren Sie den Namen aus seiner const- oder let-Zeile.
debugger wie eine Funktion aufrufen
console.log("start");
debugger();
console.log("end");
Was Node.js ausgibt
SyntaxError: Unexpected token '('Warum, und die Lösung
debugger ist eine Anweisung wie const, keine Funktion: Schreiben Sie debugger; für sich allein. Weil dies ein SyntaxError ist, kann die Datei nicht gelesen werden, und nicht einmal start wird ausgegeben.
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.