Middle
Каква е разликата между стрелкова функция и обикновена именована функция?
sobes.tech AI
Отговор от AI
Стрелковите функции в JavaScript се различават от обикновените именовани функции по няколко ключови начина:
- Контекст
this: Стрелковите функции нямат собственthis; наследяватthisот околния лексикален контекст. Обикновените функции имат собственthis, който зависи от начина на извикване. - Липса на
arguments: Стрелковите функции нямат обектаarguments. За достъп до аргументите трябва да използвате параметри или rest параметри. - Не могат да се използват като конструктор: Стрелковите функции не могат да бъдат извикани с
new. - Синтаксис: Стрелковите функции са по-кратки и по-удобни за писане на кратки функции.
Пример:
const obj = {
value: 42,
regularFunc: function() { return this.value; },
arrowFunc: () => this.value
};
console.log(obj.regularFunc()); // 42
console.log(obj.arrowFunc()); // undefined, тъй като `this` не сочи към `obj`