Назад к вопросам
Junior
93
questionbank
Что ты знаешь о различиях между выражением функции (function expression) и объявлением функции (function declaration)?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Выражение функции может быть как именованным, так и анонимным. Объявление функции всегда имеет имя.
Основное отличие — механизм подъема (hoisting):
- Объявление функции: Поднимается полностью, включая тело. Функция доступна для вызова в коде до ее фактического объявления.
- Выражение функции: Поднимается только переменная, которой оно присваивается (если используется
var). Сама функция доступна только после того, как интерпретатор достигнет строчки с ее определением. Сletиconstнет подъема даже для переменной.
// Объявление функции
console.log(declarationFunc()); // Работает, функция поднята
function declarationFunc() {
return "Я - объявление";
}
// Выражение функции
// console.log(expressionFunc()); // Вызовет TypeError или ReferenceError (зависит от var/let/const)
const expressionFunc = function() {
return "Я - выражение";
};
console.log(expressionFunc()); // Работает после определения
Объявления функций предпочтительнее для обычного использования, так как их порядок в коде не влияет на возможность вызова. Выражения функций часто используются для:
- Создания анонимных функций (например, в качестве аргументов или сразу вызываемых функциональных выражений - IIFE).
- Условного определения функций.
- Создания замыканий.