JSLint will hurt your feelings +
Javascript ist manchmal ganz schön anstregend (um nicht schmerzhaft zu sagen). Gerade zu Beginn ist die Programmier-Erfahrung nicht weit genug fortgeschritten, um sauberen Code zu schreiben. Mit sauber meine ich an dieser Stelle nicht die Formatierung und auch nur am Rande die Lesbarkeit des Codes. Beides ist selbstverständlich und auch schon am Anfang vorhanden. Javascript hat aber ein paar sehr üble Fallen, die oft erst mit wachsender Größe des Projekts auffallen.
Beispiele:
- eine Variablendeklaration ohne vorrausgehendes var wird global (man sollte sich in Schleifen somit nie auf den Zählerstand von i verlassen)
- for-in-Loop durchläuft nicht nur Attribute, sondern auch Methoden des Objekts. Da Javascript eine dynamische Sprache ist, kann man sich nicht darauf verlassen, dass ein Array nur Feldelemente hat. Somit muss eine Prüfung der Elemente auf den Typ Attribut geprüft werden
- === anstelle von ==, damit auch der Typ der Variablen in den Vergleich eingeht ( 0 == false ist true)
- abschließende Semikolons sollten nicht fehlen
- console gibt es nur im Firefox
- …
Würde Javascript durch einen strikten Compiler laufen, würden manche Dinge auffallen. Wie der Name es aber sagt, ist Javascript eine Skriptsprache und wird somit nur interpretiert. Hinzu kommt, dass sich diese Interpreter je nach Browser unterscheiden und somit nicht sichergestellt ist, dass ein lauffähiges Skript problemlos auf andere Browser portiert werden kann.
Die Unterschiede sind nicht riesig, aber vorhanden und sind aufgrund schlechter Debugger sehr zeitintensiv. Somit sollte man zu jedem Grashalm greifen, der einem zur Verfügung steht. Den größten Grashalm stellt an dieser Stelle JSLint dar, denn es überprüft den Code und liefert Fehler und Optimierungen. JsLint ist von Douglas Crockford in Javascript geschrieben und steht unter anderem hier zur Verfügung. JSLint hat seinen Namen von dem Programm lint, welches zu Zeiten den Anfangszeiten von C viele Fehler und Optimierungen gefunden hat, die nicht vom Compiler entdeckt wurden. Ein Zitat von der Seite jslint.com ist sehr wahr:
JSLint will hurt your feelings.
JSLint erkennt jede noch so kleine Schwäche im Code. Auch nach mehreren Monaten Javascript findet ein Durchlauf mit JSLint immer noch genügend Fehler, die bis zu diesem Zeitpunkt noch keine Auswirkung hatten, aber je nach Interpreter zu echten Problem führen könnten.
Wir haben JSLint über das YUI Compressor Maven Plugin in den Buildprozess integriert und somit eine gute Hilfe, wenn es um Grashälme geht.