Стрелочные функции
Урок: Стрелочные функции
Введение
Когда мы только начинаем работать с функциями, мы используем привычный синтаксис function имя(...) { ... } с return внутри тела.
Он понятный и логичный, но со временем в коде начинает появляться много маленьких функций — особенно при работе с массивами, событиями, обработчиками.
Представь ситуацию: тебе нужно пройтись по массиву и что-то сделать с каждым элементом. В таких местах функции становятся короткими и используются прямо «на месте». И писать каждый раз function (...) { ... } становится немного громоздко.
Чтобы сделать код компактнее и удобнее, в JavaScript появились стрелочные функции.
Это более короткий способ записи функций, который особенно часто используется в современном коде.
Как выглядит стрелочная функция
Начнём с простого примера.
Обычная функция:
function sum(a, b) {
return a + b;
}
console.log(sum(2, 3));
Та же функция в виде стрелочной:
const sum = (a, b) => {
return a + b;
};
console.log(sum(2, 3));
Разберём:
(a, b)— параметры;=>— стрелка, которая отделяет параметры от тела функции;{}— тело функции.
Это тот же функционал, но записанный короче.
Упрощённая запись
Стрелочные функции позволяют ещё больше упростить код.
Если функция состоит из одной строки, можно убрать return и фигурные скобки:
const sum = (a, b) => a + b;
console.log(sum(2, 3));
Здесь:
- результат выражения возвращается автоматически;
returnписать не нужно.
Это называется «неявный return».
Один параметр и отсутствие параметров
Если у функции один параметр, скобки можно опустить:
const greet = (name) => 'Привет, ' + name;
console.log(greet('Anna'));
Если параметров нет, скобки обязательны:
const sayHello = () => 'Привет!';
console.log(sayHello());
Это делает синтаксис более гибким.
Стрелочные функции в методах массивов
Стрелочные функции особенно полезны при работе с массивами.
Например, с методом map:
let numbers = [1, 2, 3];
let result = numbers.map((num) => num * 2);
console.log(result);
Результат:
[2, 4, 6]
Разберём:
num => num * 2— это функция;- она применяется к каждому элементу массива;
- возвращает новое значение.
Такой код выглядит компактно и читается легче, чем с обычной функцией.
Стрелочные функции с несколькими строками
Если внутри функции несколько действий, нужно использовать фигурные скобки и return.
const sum = (a, b) => {
let result = a + b;
return result;
};
console.log(sum(4, 5));
Здесь уже нельзя опустить return, потому что тело функции содержит несколько строк.
Разница в поведении (this)
Есть важная особенность стрелочных функций — они не имеют собственного this.
Рассмотрим пример:
let user = {
name: 'Stepan',
greet: function () {
console.log(this.name);
},
};
user.greet();
Здесь this указывает на объект user, в консоли будет Stepan.
Если использовать стрелочную функцию:
let user = {
name: 'Stepan',
greet: () => {
console.log(this.name);
},
};
user.greet();
this уже не будет указывать на объект (в стрелке берётся this из внешней области). В консоли часто окажется undefined — это как раз следствие «ломается» привязка к user.
Поэтому стрелочные функции обычно не используют как методы объектов, когда нужен именно this объекта.
Когда стоит использовать стрелочные функции
Стрелочные функции особенно удобны:
- для коротких функций;
- внутри методов массивов (
map,filter); - в обработчиках событий;
- когда функция используется один раз.
Например:
let names = ['Stepan', 'Ivan'];
names.forEach((name) => {
console.log(name);
});
Код становится короче и легче читается.
Когда лучше использовать обычные функции
Есть ситуации, где лучше использовать классический синтаксис:
- когда функция сложная и длинная;
- когда нужен собственный
this; - когда важна читаемость.
Например, методы объекта лучше писать через обычные функции.
Где это используется на практике
Стрелочные функции используются практически во всех современных проектах.
Особенно часто:
- при работе с массивами;
- в React;
- в обработке событий;
- в асинхронном коде.
Они позволяют писать код быстрее и компактнее, особенно когда функция небольшая.
Итоговое понимание
Стрелочные функции — это более короткий способ записи функций в JavaScript.
Они не добавляют новой логики, но делают код:
- компактнее;
- чище;
- удобнее для чтения в простых случаях.
Ключевая идея в том, что стрелочные функции — это инструмент для упрощения записи, а не замена всех функций.
Важно понимать, когда их использовать, а когда лучше остаться с классическим синтаксисом.