Стрілочна функції в JavaScript: швидко, просто і без проблем
JavaScript постійно розвивається, і одна з найулюбленіших сучасних фішок розробників — це стрілочні функції (arrow functions). Їх легко писати, вони виглядають лаконічно і дають кілька важливих переваг над традиційними функціональними виразами. Давайте розберемося, що це таке, коли їх використовувати і як уникнути типових помилок.
Що таке стрілочна функція?
Це коротший синтаксис для запису функції, представлений у ECMAScript 6 (ES6):
// Звичайна функція
function add(a, b) {
return a + b;
}
// Стрілочна функція
const add = (a, b) => a + b;
Як бачимо, стрілочна функція займає менше місця і читається швидше.
Основні переваги
1. Лаконічність
Ви можете зменшити кількість коду, що особливо зручно для однорядкових виразів.
const square = x => x * x;
2. Не мають власного this
Це найважливіша відмінність. Стрілочні функції не створюють нового контексту this
, а “успадковують” його від оточення. Це корисно в колбеках і методах:
class Timer {
seconds = 0;
start() {
setInterval(() => {
this.seconds++;
console.log(this.seconds);
}, 1000);
}
}
У звичайній функції this
посилався б на глобальний об’єкт, і this.seconds++
не працювало б.
3. Не мають arguments
У стрілочних функціях немає власного об’єкта arguments
. Якщо вам потрібно працювати з аргументами, краще використати rest-параметри:
const sum = (...args) => args.reduce((a, b) => a + b);
Потенційні проблеми
Не можна використовувати як методи об’єкта
const user = {
name: "Анна",
sayHi: () => {
console.log(`Привіт, я ${this.name}`); // undefined
}
};
this
тут не буде вказувати на об’єкт user
. Використовуйте звичайну функцію для методів класів або об’єктів.
Не підходять для конструкторів
Стрілочні функції не мають власного this
, тому їх не можна використовувати як конструктори:
const Person = (name) => {
this.name = name; // Помилка
};
Де їх варто використовувати
- В коротких функціях з простим обчисленням
- У методах масивів:
map
,filter
,reduce
- У колбеках таймерів, обробників подій (якщо не потрібен власний
this
) - У React-компонентах як функції без стану
Висновок
Стрілочні функції — це чудовий інструмент сучасного JavaScript, що дозволяє писати код швидше та чистіше. Вони не замінюють звичайні функції повністю, але є ідеальними для більшості повсякденних задач. Головне — пам’ятати про особливості this
і не використовувати їх там, де потрібна динамічна прив’язка контексту.
Пишіть коротко, пишіть чисто — обирайте стрілочки!