@patrickstar
LOTS is probably relative. If you stated life coding assembly it's not so hard, but you do have to understand what the compiler and the browser are doing behind the scenes.
We do a lot of maths (e.g. Chebyshev polynomials with hundreds of terms) and even four years ago, raw javascript was within a factor of two of C++. That was why we made the decision to switch when we moved to mobile.
We also have a javascript raytracer and performance there improved dramatically when I switched from object access to closures and when I understood the compiler could spot integers and adjusted my code to work with them wherever possible. So the typing is there under the hood (Safari will show you the types of variables). However I miss it every time a bug formal typing would have caught gets through,
But you have to remember to declare classes in the same order or they become different types, that calling functions with different types reinstantiates it (i.e. treat every function as a template) and that functions that catch aren't compiled on V8. I've just read the post mortem on strong mode and it looks like the new features will be slow for some time to come, too (avoid @@species).
And in everyday javascript, the DOM remains a bottleneck in general and triggering layouts in particular. The garbage collector is getting much better but still can be an issue at times. And we still have to do too much on the main thread.
I would imagine it's much easier for cross-compiled code to stick within the rules.