I don’t know about “fine”. It has a lot of weird stuff baked in. Hoisting. Unexpected type coercion. Too many ways to loop over something and I always forget which one is which. “There’s more than one way to do it” is kind of a recurring problem, come to think of it. Several function declaration syntaxes. Dot notation AND bracket notation for objects.
Also it will forever bother me that object keys aren’t quoted.
const foo = "hello";
const bar = { foo: "world" }
That should be, in my mind, { "hello": "world" }
. It’s not. It’s { "foo": "world" }
But if you want to do that, you need to do const bar = { [foo]: world }
. Which looks like your key is an array with one entry, a string with a value of “foo”
You also end up learning a whole framework, with its syntax and idioms, every couple years. Angular. React. Redux. Whatever.
There’s also a lot of people who have never used anything else, and want to use javascript for everything.
Javascript is basically D&D. Wildly popular. Full of legacy jank. People try to use it for anything even though there are better or more specialized tools.
Yes. This is sometimes known as chesterton’s fence
https://theknowledge.io/chestertons-fence-explained/