Middle
¿Qué formas existen para declarar funciones en JavaScript? ¿En qué se diferencia una declaración de función de una expresión de función? ¿En qué se diferencia una función de flecha de una declaración de función?
sobes.tech AI
Respuesta de la IA
В JavaScript есть несколько способов объявления функций:
- Function Declaration (Объявление функции):
function foo() {
return 'bar';
}
Функция поднимается (hoisted) в начало области видимости, её можно вызвать до объявления.
- Function Expression (Функциональное выражение):
const foo = function() {
return 'bar';
};
Функция создаётся в момент выполнения, не поднимается, вызвать до объявления нельзя.
- Arrow Function (Стрелочная функция):
const foo = () => 'bar';
Отличия стрелочной функции от function declaration:
- Не имеет собственного this, наследует его из внешнего контекста.
- Не имеет arguments, super, new.target.
- Не может использоваться как конструктор (нельзя вызвать с new).
- Более компактный синтаксис.
Таким образом, выбор способа объявления зависит от контекста и требований к поведению функции.