For me the biggest demerits of JavaScript are :
The inconsistent implementation of DOM API. As a result, we need to use polyfills and avoid using any new technology/api that may break in other browsers.
It's very easy to pollute the global scope and there is no easy way to debug your code. No good way to organise and structure your code unless you use a framework like Angular.
Why don't we have multi-line strings?
Poor implementation of parseInt(). It treats strings with leading zeros as octal. You can of course pass 10 as the second argument to have better performance and consistent results.
It's object based - not object oriented. So, you don't have full power of inheritance and other cool OOP concepts. It's better to use something like TypeScript if you are a OOP fan boy.
Variable hoisting is pretty confusing and can easily scare off beginners.
Don't you think null and undefined are redundant? In my opinion we should have one of these (preferably null).
But JavaScript rocks outside browser environment (e.g. Node).
The Unix Tiger