It's was my take in 2015, when saying it then got you bashed to death.
Now you can say it, since people have been burnt enough to admit it, but ironically it's actually less true.
Yes, the JS language is always hackish. The stdlib sucks and the ecosystem is a Jenga tower. A lot of JS projects are still what I call "disposable code bases".
But.
Modern JS is tolerable. Functions are now decent, you have let/const, map/filter... There are even some nice things:
• spread and destructuring, and they play well with the limited data structures.
• simplest async paradigm ever: immediate schedule, and returns a Future, may attach a callback or prefix with await.
• concise arrow functions.
• ? and ?? operators. I actually miss them in Python.
Tooling has improved tenfold:
• VSCode gives you good code intelligence out of the box.
• any build tool will solve imports, scoping, "this" weirdness, browser compat, etc.
• new gen builders, such as ViteJS (or anything based on rollup/esbuild), are fast, reliable, and have sane default. No more webpack trouble.
• new gen packagers, such as pnpm, are fast, reliable, and save a ton of disk space. No more "takes 10 minutes, download the entire internet 3 times".
• with VueJS (SPA), htmx (ajaxify Django, Rails, Laravel...) and petite-vue (progressive enhancement), front end dev is almost fun. And light.
• Typescript.
Now, I still avoid JS if I can. I don't like having to google simple things like type coercion or how to left trim a string.
As soon as I can go Python, I do so. It's hard to beat Django or FastApi for the web, Typer for scripting, pandas for data analysis, pytest and robotframework for testing, or just the stdlib/pypi.org for pretty much everything. And with shiv and nuitka, deployment is now on a different level.
But when I have to use JS, I don't dread it anymore.