the only thing wich is lacking right now is native support for it in the browsers
the only thing wich is lacking right now is native support for it in the browsers
ES6 introduces way more syntax, making it much harder for beginners to learn.
Arrow functions make scope much harder to reason about, which makes closures more of an anti-pattern. In ES6 closures are one of a tiny number of scope patterns so you can actually use them.
Arrow functions cause bind to break in unpredictable ways.
Most other ES6 features are just syntactic sugar which offer no software engineering benefit and add a whole layer of conflicting code styles that one must constantly switch between, or else deal with constant pointless linting fixes if you are adhering to a consistent standard.
ES6 demands you use a transpiler which makes debugging flakier, and adds another place for bugs and maintenance work, in addition to often slowing he build down.
If I wanted deal with that much headache I’d just use typescript and at least get type checking in exchange for the syntax change and transpile step.
ES6 exists because some programmers never understood prototype and bind. And felt naming a function that is only called once was icky. Mostly former Ruby programmers. So they bolted a shitty Ruby onto JavaScript in order to get people to stop using prototype and bind, which are the heart of JavaScript’s control flow.
Basically the chest burster from Alien.