That is both a good and bad thing.
Within both C++ and JavaScript there is a very elegant programming language with powerful semantics.
However, there are also a lot of bad solutions and dangerous hacks accumulated. And most of us programmers don't know how or don't have the self discipline to separate the good parts from the bad parts. And sometimes even with the knowledge and self discipline you can't avoid them (e.g: when using someone else's libraries).
In some languages (e.g: Lua, Python) the designers are ready to break backwards compatibility. C++ chose not too.