Стрелочные функции

Стрелочные функции (arrow functions) представляют сокращенную версию обычных функций. Стрелочные функции образуются с помощью знака стрелки (=>), перед которым в скобках идут параметры функции, а после - собственно тело функции. Например:

let sum = (x, y) => x + y;
let a = sum(4, 5);
console.log(a); 		// 9
let b = sum(10, 5);	
console.log(b);     	// 15

В данном случае функция (x, y) => x + y осуществляет сложение двух чисел и присваивается переменной sum. Поскольку после стрелки фактически идет конкретное значение, функция возвращает это значение. И мы можем через переменную sum вызвать данную функцию.

Если после стрелки идет операция или выражение, которое возвращает значение, то это значение фактически возвращается из стрелочной функции. Но в качестве тела функции может примяться выражение, которое ничего не возвращает и просто выполняет некоторое действие:

let sum = (x, y) => console.log(x + y);
sum(4, 5);		// 9
sum(10, 5);		// 15

Если функция принимает один параметр, то скобки вокруг него можно опустить:

 
var square = n => n * n;

console.log(square(5));		// 25
console.log(square(6));		// 36
console.log(square(-7));	// 49

Если тело функции представляет набор выражений, то они облекаются в фигурные скобки:

var square = n => {
	let result = n * n;
	return result;
}

console.log(square(5));		// 25

Для возвращения результата из функции в таком случае применяется стандартный оператор return.

Особо следует остановиться на случае, когда стрелочная функция возвращает объект:

let user = (userName, userAge) => ({name: userName, age: userAge});

let tom = user("Tom", 34);
let bob = user("Bob", 25);

console.log(tom.name, tom.age);		// "Tom", 34
console.log(bob.name, bob.age);		// "Bob", 25

Объект также определяется с помощью фигурных скобок, но при этом он заключается в круглые скобки.
Если стрелочная функция не принимает никаких параметров, то ставятся пустые скобки:

var hello = ()=> console.log("Hello World");
hello();	// Hello World
hello();	// Hello World