SheepShaver schrieb:
Na allein der Themenkomplex Typisierung. Javascript ist schwach typisiert, das führt dazu das Du Datentypen in Operationen fröhlich mischen kannst. Auch das Variablen nicht statisch deklariert werden kann ein Problem werden. Ein Tippfehler führt halt dazu, das das nicht angemeckert wird, sondern von einer neuen Variable ausgegangen wird.
Das ist immer wieder Quelle zahlreicher Fehler die zudem erst zur Laufzeit auffallen, wenn der problematische Codepfad ausgeführt wird.
Generell ist die Sprache recht fehlertolerant. Das bedeutet aber auch, das der Interpreter statt Uneindeutigkeiten anzumeckern im Zweifel "ratet" was der Programmierer wohl wollte. Damit handelst Du Dir Inkonsistenzen ein, wo ähnliche Dinge völlig unterschiedlich interpretiert werden.
Dem kann man entgegenwirken mit Disziplin, nutzen und entsprechenden Tools, Frameworks, Tests etc. aber ist zunächst mal eine Schwäche die man Berücksichtigen muss.
Man muss ja auch ganz klar sagen, das das Javascript-Design ja eher so ein Schnellschuss war und auch nie gedacht war, in dem Umfang eingesetzt zu werden wie man es heute tut. Und ja. Inzwischen gabs auch neue Versionen die einige Dinge ausgebügelt haben und auch nützliche Features ergänzt haben, aber wenn die Basis schon nicht so toll ist, dann ists halt schwierig das dann im nachhinein wieder glatt zu ziehen (es sei denn man macht nen massiven Kompatibilitätsbruch ; die Python-Leute wissen, was ich meine

).