Sobes.tech
Junior
116
questionbank

В чем разница между двумя способами объявления функции?

Ответ от нейросети

sobes.tech AI

Функция-объявление (Function Declaration) и функция-выражение (Function Expression).

Свойство Функция-объявление (Function Declaration) Функция-выражение (Function Expression)
Хоистинг Поднимается (доступна до своего объявления в коде). Не поднимается (недоступна до своего объявления).
Синтаксис Объявляется как отдельный оператор. Объявляется как часть выражения (например, присваивания или аргумента).
Пример function myFunction() {} const myFunction = function() {}; или const myFunction = () => {};
Использование Предпочтительна для именованных стандартных функций. Часто используется для анонимных функций, передаваемых как колбэки.
Область видимости Доступна во всем своем содержащем блоке или скрипте/модуле. Область видимости зависит от выражения, частью которого она является.
// Пример Function Declaration
function sayHelloDeclaration() {
  console.log('Hello from Declaration');
}

sayHelloDeclaration(); // Можно вызвать до объявления благодаря хоистингу

// Пример Function Expression
const sayHelloExpression = function() {
  console.log('Hello from Expression');
};

sayHelloExpression(); // Можно вызвать только после объявления

// const sayHelloArrow = () => { // Пример стрелочной функции (также является Function Expression)
//   console.log('Hello from Arrow Function');
// };