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

В ES6 появились так называемые стрелочные функции, упрощающие синтаксис функций.

В следующем примере кода первой написана обычная функция, а второй - соответствующая ей стрелочная (обе функции делают одно и тоже):

let func1 = function(num1, num2) { let result = num1 * num2; return result; } let func2 = (num1, num2) => { let result = num1 * num2; return result; }

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

let func1 = function(num1, num2) { return num1 * num2 } let func2 = (num1, num2) => num1 * num2;

Если параметр стрелочной функции один - круглые скобки можно не писать:

let func1 = function(num) { return num * num; } let func2 = num => num * num

Если в функции вообще нет параметров - нужно писать пустые круглые скобки:

let func1 = function() { alert('!!!'); } let func2 = () => alert('!!!')

Пример применения

Особое преимущество стрелочные функции имеют в качестве коллбэков. Давайте посмотрим на примере, на сколько упрощается код в таком случае.

Возьмем для примера функцию filter из предыдущего урока:

let result = filter([1, 2, 3, 4, 5], function(elem) { if (elem % 2 == 0) { return true; } else { return false; } });

Для начала давайте избавимся от конструкции if и напишем условие просто через оператор ==:

let result = filter([1, 2, 3, 4, 5], function(elem) { return elem % 2 == 0; });

Заменим теперь обычную функцию на стрелочную:

let result = filter([1, 2, 3, 4, 5], elem => elem % 2 == 0);

Дана следующая функция с коллбэком:

let result = every([1, 2, 3, 4, 5], function(elem) { if (elem > 0) { return true; } else { return false; } });

Упростите коллбэк через стрелочную функцию.

Дана следующая функция с коллбэком:

let result = every([1, 2, 3, 4, 5], function(elem, index) { if (elem * index > 10) { return true; } else { return false; } });

Упростите коллбэк через стрелочную функцию.

Дана следующая функция с коллбэком:

let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; let result = each(, function(elem, index) { if (elem * index > 10) { return true; } else { return false; } });

Упростите коллбэк через стрелочную функцию.