An arrow function expression has a shorter syntax than a function expression and does not have its own this, arguments, super, or new.target. These function expressions are best suited for non-method functions, and they cannot be used as constructors.

MDN

Syntax

Arrow functions basic syntax:

(param1, param2, , paramN) => { statements } 
(param1, param2, , paramN) => expression // Same as: => { return expression; } 

If we only have one parameter, we do not need to use parentheses around the parameter. If we do not have any parameter we have to use empty parentheses, ().

param => { statements } // Single parameter

() => { statements } // No parameter

Examples ES5 vs ES6

Example 1:

// ES5
var wordToArrayEs5 = function(word){
  return word.split('');
};
console.log(wordToArrayEs5('test ES5')); // [ "t", "e", "s", "t", " ", "E", "S", "5" ]

// -----

// ES6
const wordToArrayEs6 = word => word.split('');
console.log(wordToArrayEs6('test ES6')); // [ "t", "e", "s", "t", " ", "E", "S", "6" ]

Example 2:

const order = [
  {product1: 10},
  {product2: 15.33},
  {product3: 22.99},
  {product4: 33.22}
];

const vatTax = 20;

// -----
// -----
    
// ES5
var orderTotalEs5 = function(){
  var total = 0;
  order.forEach(function(currentValue) {
    Object.keys(currentValue).map(function(key) {
      total += currentValue[key];
    });
  });
  total = total + (total * (vatTax / 100));
  return total.toFixed(2);
}

console.log(orderTotalEs5()); // 97.85

// -----

// ES6
const orderTotalEs6 = () => {
  let total = 0;
  order.forEach(currentValue => 
    Object.keys(currentValue).map(key => 
      total += currentValue[key]));
  total = total + (total * (vatTax / 100))
  return total.toFixed(2);
}

console.log(orderTotalEs6()); // 97.85

Support

Can I Use arrow-functions? Data on support for the arrow-functions feature across the major browsers from caniuse.com.

Resources