Всегда так было или новый стандарт?
Это не стандарт, это анекдот.
Сперва Flash и Java стали большими, неповоротливыми, но главное - кишащими ошибками и всяким прочим непотребством, поэтому от них решительно все браузеры отказались, распилили HTML 5 + JavaScript во все затычки, обмазав его компиляцией в нативный код но...
Оказалось, что JavaScript обладает фатальным недостатком - в нетипизированном языке программирования хоть обделайся, но нет возможности всегда скомпилировать return a + b в add eax, ebx; ret; потому что под a и b всегда может быть что угодно и как ни крутись ни прикручивай JIT, но дальше call VariantAdd оно не сможет уйти. Пичалька и десятикратное падение производительности. То как оптимизаторы в хроме и файрфоксе пытаются наскипидарить компиляцию в натив всякими предсказаниями и динамическими ветвлениями - отдельная эпопея, заслуживающая книги.
Ну и что взамен? И тут начались ледебе-рако-щуки - кто-то пилит один диалект JS где была бы опциональная типизация переменных, кто-то вставляет в конце всех выражений a=a|0, что из синтаксиса позволяет вывести уверенно, что a после этого кода хранит целое число и обмазывает весь код этим через кросс-компиляцию с нового диалекта, кто-то пилит диалект другого языка изначально типизированного, но который можно простеньким транслятором перевести в JavaScript "с разметкой", кто-то начал пилить эти вот всякие WebAssembly, где наоборот из JavaScript просто можно странслировать в виртуальную машину (если нужно без типизации, в режиме совместимости - то тоже в call VariantAdd), коороче разброд, шатания, целая пачка виртуальных машин и никаких обоснований почему это всё должно стать лучше старой доброй Java. Или почему через 10 лет у этого всего типизированного и full-JIT-кроссоператбельного не будет весь ворох тех же болячек от которых решительно избавлялись.