When a programming language changes as fast as Javascript, browsers need time to catch up with it. That’s why support for some of the ES6 (ECMA2016) is spotty on some browsers.

The biggest limitation I see with Javascript is the way it handles numbers. If you do anything with floating numbers, the result won’t be correct. Javascript will add some random decimals to the result.

There is also a limit to how long numbers can be. It’s around fifteen characters. Above that what happens?

Javascript is also an (arguably) interpreted language. Although there is some Just in Time compiling, from a performance point of view, it’s safe to say that it won’t ever be as performant as some of the compiled languages.

Leaked globals are often an issue. Some think it’s a design fallacy that Javascript allows it.