TIL that the arrow function introduced in ES6/2015 is NOT just short-hand for a normal function declaration. It uses lexical this scoping rather than the dynamic. Kyle Simpson argues in his excellent series You Don’t Know JavaScript that this was created in part because people misunderstand how this works and how to utilize bind. Take the following example:

The above function’s setTimeout call-site is the global scope. This…