Fehlersuche
Notation
Einzelne Zeichen
Was bedeuten diese Klammern, Punkte und Semikollon? Was machen diese kryptischen Angaben?
| ; | jede einzelne Anweisung wird mit ; abgeschlossen.
-Dies ist nicht immer erforderlich, wenn z.B. eine Anweisung nur eine Zeile hat, genügt ein Zeilenumbruch.
|
|
{
|
Anweisungsblock, Zusammenfassung mehrerer Anweisungen - zB. für eine if-Abfrage oder in einer Funktion
solche Blöcke können ineinander verschachtelt werden |
| // | kommentiert den Rest der Zeile aus, alles folgende auf dieser Zeile wird nicht dargestellt |
|
/* */ |
kommentiert alles dazwischen liegende aus, über mehrere Zeilen hinweg
Kommentare sind sehr sinnvoll und sollten ausgiebig genutzt werden, damit man später das Script noch nachvollziehen kann und die Fehlersuche erleichtert wird |
| . (Punkt) | Aneinanderreiung: zwischen Objekt.Unterobjekt.Methode trennen |
| , (Koma) | Aneinanderreiung: mehrere Event-Handler trennen, Variablen trennen |
| " " oder ' '
(Anführungszeichen) |
Text-String wird wörtlich ausgegeben, Wert im Event-Handler, Wert in HTML, |
| ( ) (Runde Klammern) | Instanz einer Methode, Parameter einer Funktion |
| < > (Spitze Klammern) | erzeugt HTML in einem String |
| [ ] (Eckige Klammern) | Array Indizes: Nummeriertes Verzeichnis eines Array, erster Eintrag beginnt immer bei [0] |
| = | Zuweisungs Operator für den Wert einer Variablen |
| ..." + ... | Verknüpfungs-Operator: Verknüpft einen String mit einer Variablen. String in Anführungszeichen, Variable ohne Anführungszeichen |
| + - >= % & * || ! ^ ~ | weitere Operatoren -VergleichsOp, BerechnungsOp, LogischeOp, BitOp |
| ? : | if-else Bedingung spezial Schreibweise |
| \ | Steuerungszeichen, Entwertungszeichen |
Fehler finden
Welches sind die häufigsten Fehler?
| In der Statuszeile erscheint ein gelbes Dreieck mit Ausrufezeichen: | Wenn darauf doppelt geklickt wird, öffnet sich ein Popup mit der Fehlermeldung, welche die Fehler-Zeile von Dokumentanfang an (nicht erst vom Beginn des JavaScripts an) mit einer Zahl angibt. |
| Syntax error | Ein Syntax error wird ausgegeben, wenn das Skript einen Schreibfehler aufweist, ein doppeltes Anführungszeichen statt eines einfachen verwendet wurde (unbalanced quotes). |
|---|---|
|
document.write("text for the page"
) </SCRIPT> </BODY> </HTML> |
Syntax errors gibt es auch, wenn ein Befehl angefangen aber nicht beendet wird:
) - auf einer neuen Zeile produziert ein Syntax error |
| Run-Time error | Ein Run-Time error wird ausgegeben, wenn ein unpassender Befehl verwendet wurde, wenn ein Fehler in der Ablauflogik auftritt. Z.B. den Namen eines Button aufrufen durch einen Befehl, welcher eine Textbox meint |
| Namen vergeben für Funktion oder Variable: | JavaScript unterscheidet Gross und Kleinschreibung: glEich, Gleich, GLEICH, gleIch sind nicht gleich ! |
| Namen können alle Buchstaben enthalten, nicht mehr als 32 Zeichen, den _ und Zahlen, aber sie dürfen nicht mit einer Zahl beginnen. Leerschläge und Punkte dürfen nicht in Namen vorkommen. | |
| funktion | statt function geschrieben |
| void delete | Es gibt für's JavaScript reservierte Worte, welche nicht als Namen für Variablen oder Funktionen verwendet werden dürfen. |
| Weitere Fehlerquellen, die zu Errormessages führen: |
|
| ; | Ende der Befehlszeile nicht mit Strichpunkt beendet |
| } | Funktion nicht mit geschweifter Klammer abgeschlossen |
| config='height=300, width=300') | Features mit Leerschlag dazwischen -hier nach dem Komma- |
| nur = statt == | zB. in einer if-Abfrage, einer Variablen wird ein Wert zugeordnet, statt dass ihr Wert mit einem anderen verglichen würde |
|
|
Eine klahre Struktur ist von grossem Vorteil und gute Ausdokumentierung mit Kommentaren hilft sehr beim Debugging. |
Debuger
Welche Hilfsmittel stehen mir zur Verfügung?
| Für den FireFox Browser |
Plug-in welche nach der Installation unter Extras stehen:
Web Developer Firebug Fehlerkonsole |
Fehler vermeiden
Wie kann ich Fehler auffangen noch bevor sie auftreten?
try {
|
Versuche den ersten Anweisungsblock auszuführen
fall der Versuch fehlschlägt (z.B. weil es den Array gar nicht gibt), geht's unten im "catch" Block weiter. das Argument (e) meint: Es wird keine Fehlermeldung angezeigt. Einer von beiden Blöcken, der "catch" oder der "finally", ist optional. Der "finally" Block wird immer ausgeführt. |