• Arrow functions don’t have their own bindings to thisarguments or super, and should not be used as methods.
  • Arrow functions don’t have access to the new.target keyword.
  • Arrow functions aren’t suitable for callapply and bind methods, which generally rely on establishing a scope.
  • Arrow functions cannot be used as constructors.
  • Arrow functions cannot use yield, within its body.

An arrow function uses () => instead of function ():

(param1, paramN) => {
   let a = 1;
   return a + param1 + paramN;
}
// Traditional Anonymous Function
function (a){
  return a + 100;
}
 
// Arrow Function Break Down
// 1. Remove the word "function" and place arrow between the argument and opening body bracket
(a) => {
  return a + 100;
}
 
// 2. Remove the body braces and word "return" -- the return is implied.
(a) => a + 100;
 
// 3. Remove the argument parentheses
a => a + 100;