Zu dem Problem mit den Variablen: da hast Du Recht, die ungenaue Definition macht tatsächlich ab und zu Probleme. Ich kenne Sprachen (z.B. Visual Basic) da gibt es ein Kommando "option explicit". Dann schreit das Programm, wenn man aus Versehen eine neue Variable deklariert (z.B. Tippfehler, bei JScript auch durch die lästige Groß/Kleinschreibung). Das gibt es leider in Skript-Sprachen (JScript, VBScript) nicht, oder?
Der Firefox produziert auch Warnungen in der Javascript-Konsole. Auf Wunsch meckert der auch Dinge an wie uninitialisierte Variablen u.ä., da gibt es einen entsprechenden Schalter unter about:config.