Sobes.tech
Junior

Каква е разликата между двата начина за задаване на функция?

sobes.tech AI

Отговор от AI

Основната разлика е в контекста на this.

Начин за дефиниране на функция Разлика
обявяване на функция Контекстът this се определя от начина, по който се извиква функцията. Той се повдига преди изпълнението на кода (hoisting).
стрелкова функция Контекстът this наследява от околния (лексикален) контекст. Не се повдига (без hoisting).
// обявяване на функция
function обикновенаФункция() {
  console.log(this); // `this` зависи от извикването
}

// стрелкова функция
const стрелковаФункция = () => {
  console.log(this); // `this` наследява от контекста, в който е дефинирана
};

Стрелковите функции нямат собствен обект arguments (той се взема от външния контекст) и не могат да се използват като конструктори с оператора new.