Junior
Каква е разликата между двата начина за задаване на функция?
sobes.tech AI
Отговор от AI
Основната разлика е в контекста на this.
| Начин за дефиниране на функция | Разлика |
|---|---|
обявяване на функция |
Контекстът this се определя от начина, по който се извиква функцията. Той се повдига преди изпълнението на кода (hoisting). |
стрелкова функция |
Контекстът this наследява от околния (лексикален) контекст. Не се повдига (без hoisting). |
// обявяване на функция
function обикновенаФункция() {
console.log(this); // `this` зависи от извикването
}
// стрелкова функция
const стрелковаФункция = () => {
console.log(this); // `this` наследява от контекста, в който е дефинирана
};
Стрелковите функции нямат собствен обект arguments (той се взема от външния контекст) и не могат да се използват като конструктори с оператора new.