Most languages in common use are more powerful and better designed than JavaScript. All the features you mention are supported by other languages like Python or Ruby which are overall better designed.
I'm not saying this to diss JavaScript. I quite enjoy working with JS when developing web. But looking at it objectively, JS has a number of drawbacks compared to other languages.
- Numerous unfixable flaws. Many mistakes were made when initially developing JS. No need to enumerate them here, they are well documented. All languages have mistakes in the initial design which are later fixed. The difference with JS is that the language was developed and released far to quickly and these mistakes can never be fixed due to the requirement of backwards compatibility in browsers.
- Extremely slow process for introducing improvements and new features. Since all browser vendors have to agree, and might for various political reasons want to sabotage development of the language. Look at C# which is actually a newer language than JS, but in the same time-span have improved tremendously.
- Impoverished standard library. Modern languages like Python, Ruby or anything based on Java or .net have extensive standard libraries for almost anything you could need. In JS you can't even read a file without 3rd party libraries.
There is simply no reason to choose JavaScript if you have the option of choosing another modern language. Only reason would be if it was the only language you know.