01.i Function Declaration

Function Declaration - функция, объявленная в основном потоке кода, имя которой регистрируется в текущем пространстве имен. К таким функциями относят обычные объявления функции:

// function declaration
function isEven(num) {
  return num % 2 === 0;
}

isEven(24); // => true
isEven(11); // => false

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

Основные свойства:

  • Функция обязательно имеет имя;

  • Функция "поднимается" вверх, т.е. функцию можно использовать выше её объявления.

  • Создается на этапе входа в контекст;

  • Новая функция создается в текущем пространстве имен.

  • Анонимные функции не могут быть созданы таким образом.

  • Находится в коде непосредственно: либо на уровне Программа (Program), либо внутри другой функции (Function Body);

  • Воздействует на объект переменных (имя этой функции записывается в окружение контекста);

  • Объявление функции Function Declaration, сделанное в блоке, видно только в этом блоке (ES6).

Такие функции можно использовать и до их объявления, т.к. они поднимаются наверх (правило подъема работает только в текущем scope.):

// Hoisted variable
console.log(hello("Aliens")); // => 'Hello Aliens!'
// Named function
console.log(hello.name); // => 'hello'
// Variable holds the function object
console.log(typeof hello); // => 'function'

function hello(name) {
  return `Hello ${name}!`;
}

Last updated