Fehler suchen
Fehler suchen heißt herausfinden, warum das Programm das Falsche tut. Diese Seite hat eine Bestellung, { drink: "tea", size: "regular" }, und einen falschen Eigenschaftsnamen. Der bug liest order.cup. Das kaputte Protokoll ist tea / undefined. Nach der Korrektur lautet die Zeile fixed / tea / regular.
Keine Klassenlektion
Die vorige Seite baute Drink und SpecialDrink. Ihre Zeile war tea / regular / mint. Dort war absichtlich nichts kaputt.
Hier sind die Daten von Anfang an richtig. Der bug liest order.cup, das Objekt hat aber size, nicht cup. Die echte Eigenschaft ist size.
Erst den Wert lesen
console.log gibt einen Wert aus und hält das Skript nicht an. console.warn markiert eine Warnung. console.error markiert einen Fehlschlag. Keines davon repariert die Daten. Sie machen nur den falschen Wert sichtbar.
Der Eigenschaftsname ist falsch
label verbindet order.drink und order.cup. drink existiert, also ist das erste Wort tea. cup existiert nicht, also ist das zweite Wort undefined.
const order = { drink: "tea", size: "regular" };
function label(order) {
return order.drink + " / " + order.cup;
}
console.log(label(order));
Das Protokoll ist tea / undefined. Das Objekt hat weiterhin size. Die Funktion hat es nie gelesen.
Den Fehlschlag markieren
Wenn size fehlt, rufen Sie console.error("missing size") auf. Dieser Ausschnitt übergibt eine Bestellung ohne Größe, damit der Fehlerpfad läuft. console.error("missing size") wirft nicht.
function label(order) {
if (!order.size) {
console.error("missing size");
return order.drink + " / missing size";
}
return order.drink + " / " + order.size;
}
console.log(label({ drink: "tea" }));
Die Konsole zeigt den Fehler missing size, und der Rückgabetext ist tea / missing size. Eine leere Bestellung ohne size gibt tea / missing size zurück. Eine leere Zeichenkette gilt ebenfalls als fehlend, weil !"" wahr ist.
Absichtlich anhalten
Die Anweisung debugger bittet den Browser, nur anzuhalten, wenn die Entwicklerwerkzeuge offen sind. Sind die Werkzeuge geschlossen, tut die Anweisung nichts und die nächste Zeile läuft weiter.
const order = { drink: "tea", size: "regular" };
debugger;
console.log(order.size);
Bei offenen Werkzeugen stoppt die Ausführung bei debugger, und Sie können order ansehen. Bei geschlossenen Werkzeugen ist das nächste Protokoll regular. debugger ist kein Fehler und ändert order nicht.
Die Aufrufliste
Wenn label die Funktion format aufruft und format wirft, listet die Konsole beide Funktionsnamen. Beginnen Sie oben in der Liste: das ist die Zeile, die scheiterte. Danach gehen Sie zum Aufrufer zurück. Der bug dieser Seite wirft nichts. undefined ist ein Wert, deshalb bleibt die Liste still, bis Sie selbst protokollieren.
Nur einen Namen ändern
Ersetzen Sie order.cup durch order.size. Fügen Sie keine Eigenschaft cup hinzu, nur um undefined zum Schweigen zu bringen. Das Objekt war schon richtig. Die echte Eigenschaft ist size.
Die Zeile nach der Korrektur
Die Seite liest size, prüft den Wert und schreibt einen kurzen Status vor die Bezeichnung.
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
const order = { drink: "tea", size: "regular" };
function label(order) {
if (!order.size) {
console.error("missing size");
return order.drink + " / missing size";
}
return order.drink + " / " + order.size;
}
document.getElementById("line").textContent = "fixed / " + label(order);
</script>
</body>
</html>
Die Zeile lautet fixed / tea / regular. Das Wort fixed ist nur ein Status. Getränk und Größe kommen aus dem Objekt. tea / undefined war die kaputte Funktion.
An der Theke
- Protokollieren Sie
label(order), solange sieorder.cupliest. Das Protokoll ist tea / undefined. - Übergeben Sie
{ drink: "tea" }und lesen Sie den Fehler. Der Rückgabewert ist tea / missing size. - Lassen Sie
debuggerim Skript. Bei geschlossenen Werkzeugen ist das nächste Protokoll weiterhin regular. - Lesen Sie die Seitenzeile: fixed / tea / regular.
Häufige Fehler
- Das Objekt ändern, weil das Protokoll undefined sagt
console.logfür eine Pause halten;console.loghält das Skript nicht an- Erwarten, dass
debuggerdie Seite stoppt, wenn die Werkzeuge geschlossen sind tea / regular / mintvon der Klassenseite lesenconsole.error("missing size")aufrufen und glauben, es werfe
Das bleibt
console.logzeigt einen Wert, und das Skript läuft weiter- Die kaputte Lesung ist
order.cup; die echte Eigenschaft istsize console.error("missing size")markiert den Fehlschlag und wirft nichtdebuggerhält nur an, während die Entwicklerwerkzeuge offen sind- Die Seitenzeile lautet fixed / tea / regular
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt