The arrow operator is indeed syntactic sugar for binding `this` to the function. It's not really necessary, but it makes it much easier to do what you expect to do 99% of the time.
Yes, it sucks that there are now two slightly different ways of doing things, but it's better than breaking all of the existing code currently in use. Hopefully, linters and analysis tools will mark `var` and non-arrow functions as deprecated soon after the major engines support ES6.
basically it is a 'fix' to a unusual but completely working and simple to reason about programming feature by adding a more correct but very inconsistent with the rest of the language that makes the whole thing harder to reason about.
does it serve any other benefit? I might be missing something as many people love this feature.
Yes, as stated in the linked article:
> arrow functions don't define this or arguments in their bodies, instead capturing these values from the environment
Also:
https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functio...
products
.Where(p => p.Price >= range.low && p.Price <= range.high)
.GroupBy(p => p.Category)
.Select(g => new { Category = g.Key.Name, Count = g.Count() })
It's not just about saving a few characters. It's about about making certain types of libraries readable by reducing the amount of noise.