Что такое Function Declaration?
Функции
Function Declaration (объявление функции) — это способ определить именованную функцию, которая всплывает (hoisting) целиком и доступна во всей области видимости, даже до строки объявления.
Синтаксис
function sum(a, b) {
return a + b;
}Особенности
- Hoisting целиком — можно вызвать до объявления:
greet(); // работает
function greet() {
return 'Привет';
}- Всегда имеет имя (удобно для стектрейсов и рекурсии).
- Свой
this(зависит от вызова), естьargumentsиprototype.
Function Declaration против Expression
- Declaration (
function f(){}) — всплывает целиком, доступна до объявления. - Expression (
const f = function(){}) — привязана к переменной, до инициализации недоступна.
declared(); // ок
function declared() {}
expressed(); // ошибка
const expressed = function () {};Нюанс
Объявление функции внутри блока (if) ведёт себя по-разному в strict/non-strict режимах — лучше избегать.
Где применяют
Утилиты и функции верхнего уровня, которые удобно вызывать выше по коду.
Коротко для собеседования
Function Declaration — именованная функция, всплывающая целиком: доступна до объявления во всей области видимости. В отличие от Function Expression, которая привязана к переменной и до инициализации недоступна.