Kein Wunder dass du Javascript hässlich findest
Allein schon der "+" Operator allein ist da Argument genug. Und in dem Zusammenhang auch gleich allgemein die gesamte Typisierung
Typisierung, genauer gesamt Coercion, in JavaScript ist so gelöst, dass sie einem die meisten Aufgaben einfach macht. In 90% der Fälle funktioniert Coercion so wie gewünscht. Man merkt es sie nicht, aber sie findet statt und der Code tut das, was man erwartet. In den restlichen 10% der Fälle muss man z.T. höllisch aufpassen. Über die wird dann natürlich groß gezetert. Eine Möglichkeit, damit umzugehen, ist Coercion komplett zu vermeiden bzw. zu umgehen, indem man Operatoren wie === verwendet und ständig srenge Typunterscheidungen mit typeof usw. macht. Ich halte das für unnötig, es ist besser, das Verhalten von Operatoren und deren Coercion zu verstehen. Dann kann man 90% weiterhin gedankenlos (aber informiert) schreiben und bei den 10% bewusst Mehrdeutigkeiten vermeiden.
Siehe dazu
http://es5.github.com/#x11.9.3
http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/
http://webreflection.blogspot.com/2010/10/javascript-coercion-demystified.html
http://jscoercion.qfox.nl/
http://bonsaiden.github.com/JavaScript-Garden/#types
Mathias