As pointed out in the article, the scope, arguments and 'name' properties are different for arrow functions.
One point not made, is it makes it easier to use tiered functions to make functional constructs and pipelines...
For example...
const takeWhile = (predicate) => (arr) => {...}
Can be used as a function that returns a function which takes the final argument... this can be used to build new functions that can be reused and passed around. It's often used as part of middleware patterns in various frameworks to handle various stages of middleware processing or not.