Давайте теперь рассмотрим стрелочные функции, упрощающие синтаксис функций.
В следующем примере кода первой написана обычная функция, а второй - соответствующая ей стрелочная (обе функции делают одно и тоже):
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(arr, function(elem, index) {
if (elem * index > 10) {
return true;
} else {
return false;
}
});
Упростите коллбэк через стрелочную функцию.