Junior
49
questionbank

Что ты знаешь о различиях между выражением функции (function expression) и объявлением функции (function declaration)?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Выражение функции может быть как именованным, так и анонимным. Объявление функции всегда имеет имя.

Основное отличие — механизм подъема (hoisting):

  • Объявление функции: Поднимается полностью, включая тело. Функция доступна для вызова в коде до ее фактического объявления.
  • Выражение функции: Поднимается только переменная, которой оно присваивается (если используется var). Сама функция доступна только после того, как интерпретатор достигнет строчки с ее определением. С let и const нет подъема даже для переменной.
javascript

Объявления функций предпочтительнее для обычного использования, так как их порядок в коде не влияет на возможность вызова. Выражения функций часто используются для:

  • Создания анонимных функций (например, в качестве аргументов или сразу вызываемых функциональных выражений - IIFE).
  • Условного определения функций.
  • Создания замыканий.