Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Что такое "всплытие" (hoisting) в контексте переменных и функций?

Этот вопрос проверяет понимание механизма hoisting в JavaScript и его различий для разных типов объявлений.

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

Hoisting (всплытие) - это механизм в JavaScript, при котором объявления переменных и функций "поднимаются" в начало своей области видимости. Объявления функций поднимаются полностью, а переменные, объявленные через var - только объявление, но не инициализация. let и const также всплывают, но не инициализируются до фактического объявления.

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

Hoisting влияет на доступность переменных и функций до их фактического объявления в коде.

Поведение для разных типов:

Объявления функций:

// Работает благодаря hoisting
console.log(sayHello()); // "Hello"
function sayHello() {
  return "Hello";
}

Переменные var:

console.log(x); // undefined (всплыло объявление)
var x = 5;
console.log(x); // 5

// Эквивалентно:
var x;
console.log(x); // undefined
x = 5;
console.log(x); // 5

let и const:

console.log(y); // ReferenceError
let y = 10;

// Временная мертвая зона (TDZ)
// от начала блока до объявления

Порядок hoisting:

  1. Объявления функций

  2. Объявления переменных

  3. Присваивания значений

Пример с конфликтами:

var myFunction = 1;
function myFunction() {
  return 2;
}

console.log(typeof myFunction); // "number"
// Функция всплыла первой, но потом перезаписана переменной

Практические последствия:

  • Всегда объявляйте переменные в начале области видимости

  • Используйте let и const вместо var

  • Избегайте переопределения функций переменными

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

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

#hoisting

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