Thank you... personally, I like the loose typing, and once you understand how it works in JS, then it becomes a very natural choice for moving data between different systems... this is how I brought node.js into a few places, either with build events for web resources, or for data migrations/pre-processors etc.
JavaScript is very usable by most people, and when you understand it, it gets a lot better. Since node.js/io.js with the likes of browserify you get a pretty nice module system as close to in the box as you can get. With es6/7 and things like BabelJS you get a lot of modern features as well which makes functional composition really easy.
I understand the visceral hatred of JS... I simply don't agree with it. There are a few odd corner cases that are fairly easy to understand and avoid... The problem is that some developers want JS to behave like language X. They have TypeScript which is becoming similar to ES4/C#, there's coffeescript which brings in hints of ruby and python... There's closure and a host of other options too.
In the end, it comes down to taste... I try to stay closer to JS/ES proper, and simply avoid Prototypes for the most part in code I write. I find that function libraries that operate against plain object instances are easier to reason about... treating data as idempotent (even without actually cloning objects) helps too.
JavaScript really has some beautify functionality to it, and I've felt this way for a very long time (back in the 90's even). I think it's when people try to bend JS, or the browser DOM to their will that they get burned... as opposed to actually learning how to use JS.
It's not the best for every use case... but it's a pretty good option for many of them.