Проверяет понимание способов объявления функций и различий в поведении this, hoisting и синтаксисе.
Function declaration объявляется через ключевое слово function и поднимается (hoisting). Arrow function записывается через стрелочный синтаксис и не имеет собственного this. Также arrow function нельзя использовать как конструктор и у нее нет arguments.
В JavaScript существует несколько способов объявления функций, но чаще всего сравнивают function declaration и arrow function.
function sum(a, b) {
return a + b;
}
Особенности:
поднимается (hoisting)
имеет собственный this
можно использовать как конструктор
const sum = (a, b) => a + b;
Особенности:
не имеет собственного this
не поднимается как declaration
нельзя использовать с new
const obj = {
value: 10,
method() {
setTimeout(() => {
console.log(this.value);
});
}
};
Arrow function берет this из внешнего контекста.
Arrow function — колбэки, обработчики, функциональные компоненты
Function declaration — методы, конструкторы, API
Arrow function удобны для коротких функций и колбэков, а function declaration — для объявлений, требующих hoisting или собственного контекста.