Les conversions foireuses c'est un héritage du fait que ce soit un pur langage de script (j'en connais deux: PHP et JavaScript, mais il doit y en avoir d'autres. (NB: VB est pas mal dans son genre, mais ne fait pas aussi "bien"))
Il y a des langages comme Swift, qui ont décidé de bannir toutes les conversions implicites, et c'est sans doute une très bonne idée car cela évite toute ambiguïté, mais on ne peut pas aujourd'hui patcher tous les langages du monde pour faire de même. (En plus de ça, ça marche particulièrement bien avec les langages fortement typés, mais particulièrement mal sur les langages faiblement typés comme JavaScript. Et puis c'est pratique de faire rentrer la valeur '5' dans tous les types qui peuvent la contenir sans avoir à demander une conversion.)
De toutes façons, (j'ai déjà du le dire mais pas comme ça…) JavaScript est un assemblage de petites briquettes, et la forme de chacune d'entre elles dépend de celles de ces voisines, tu ne peux pas en retirer une sans risquer de faire effondrer le reste. Malgré ses défauts initiaux, ça reste aujourd'hui une merveille d’ingénierie, juste du fait que l'ensemble arrive à rester cohérent et prévisible. (Le fait qu'il soit prévisible n'implique pas le fait que ce soit facile pour un humain de prédire ce que fera un code donné)
En l’occurrence, le sous-ensemble du JavaScript qui permet de ne coder qu'avec des symboles non alphanumériques est une conséquence indésirable mais tout aussi inévitable de toutes les autres fonctionnalités
