PassFront
  1. PassFront
  2. База знаний
  3. Функции

Что такое 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, которая привязана к переменной и до инициализации недоступна.

Другие вопросы раздела