Das Problem von JavaScript ist weniger die dynamische Typisierung, also dass eine Variable keinen definierten Typ zur Compile-Zeit hat. Die haben andere Programmiersprachen auch, ohne so lax wie JavaScript zu sein (bspw. Python und Ruby). Klar, die kann man natürlich nicht mögen, statisch getypte Sprache haben sicher ihre Vorteile.
Problematisch kann vor allem die schwache Typisierung werden. Also die automatische Typumwandlung, wenn ein anderer Typ erwartet wird oder inkompatible Typen aufeinandertreffen - eben die Coercion.
Diese ist aber auch nicht völlig willkürlich, sondern folgt eigentlich sehr festen, klaren und einfachen Regeln. Man muss sie nur jeweils kennen.
Mathias