Sobes.tech
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`