Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: hoisting, function

Какие виды объявления функций всплывают (hoisting)?

Этот вопрос проверяет знание различий в hoisting между разными способами объявления функций.

Короткий ответ

Полностью всплывают только Function Declarations (объявления функций). Function Expressions (функциональные выражения), включая стрелочные функции, не всплывают - всплывает только объявление переменной, но не присваивание функции. Объявления классов также не всплывают.

Длинный ответ

Поведение hoisting значительно различается в зависимости от способа объявления функции.

Function Declaration (полное всплытие):

// Работает - функция полностью доступна
sayHello(); // "Hello"

function sayHello() {
  return "Hello";
}

Function Expression (частичное всплытие):

// Не работает - переменная всплыла, но равна undefined
sayHello(); // TypeError: sayHello is not a function

var sayHello = function() {
  return "Hello";
};

Стрелочные функции:

// Не работает - аналогично Function Expression
sayHello(); // ReferenceError (let/const) или TypeError (var)

const sayHello = () => {
  return "Hello";
};

Классы:

// Не работает - классы не всплывают
const obj = new MyClass(); // ReferenceError

class MyClass {
  constructor() {}
}

Практический пример:

// Function Declaration - работает
console.log(add(2, 3)); // 5
function add(a, b) { return a + b; }

// Function Expression - не работает
console.log(multiply(2, 3)); // TypeError
var multiply = function(a, b) { return a * b; };

// Стрелочная функция - не работает  
console.log(divide(6, 2)); // ReferenceError
const divide = (a, b) => a / b;

Рекомендации:

  • Используйте Function Declarations для утилитных функций

  • Для callbacks и методов используйте Function Expressions

  • Всегда объявляйте функции до их использования

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#hoisting

#function

Подпишись на React Developer в телеграм