← Все вопросы

Что такое hoisting (всплытие) в JavaScript?

Задан 3 месяца назад741 просмотров3 ответа
12

Слышал про hoisting/всплытие переменных и функций. Что это значит на практике и почему важно знать?

3 ответа

22
✓ Принятый ответ — помог автору

Hoisting — это поведение JS, при котором объявления как бы «поднимаются» в начало области видимости перед выполнением кода. На практике это объясняет странности:

console.log(x); // undefined, а не ошибка
var x = 5;

var x «всплыл» наверх (но без значения — поэтому undefined). А вот с let/const иначе — они тоже всплывают, но обращение до объявления даёт ошибку (так называемая «временная мёртвая зона»):

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

Функции, объявленные через function, всплывают целиком — их можно вызвать выше объявления:

hello(); // работает!
function hello() { console.log('hi'); }

Вывод: пиши let/const, объявляй переменные до использования — и hoisting перестанет тебя удивлять.

9

Это «поднятие» объявлений вверх области видимости. Из-за него var доступен до строки объявления (как undefined), а функции через function — вызываемы выше объявления.

4

Всплытие объявлений в начало scope.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект