Hoisting — это поведение JavaScript, при котором объявления перемещаются в начало своей области видимости на этапе компиляции — до выполнения любого кода.
Объявления функций полностью поднимаются, что означает, что доступны и само объявление, и тело функции до запуска кода. Ты можешь вызвать функцию до того, как она появится в исходном коде:
greet(); // Работает отлично
function greet() { return "Hello"; }
Переменные, объявленные с помощью var, поднимаются, но только само объявление — не значение. Они автоматически инициализируются как undefined до момента присваивания:
console.log(x); // undefined
var x = 5;
let и const также поднимаются, но они не инициализируются. Обращение к ним до строки их объявления вызывает ReferenceError. Этот период называется Temporal Dead Zone (TDZ):
console.log(y); // ReferenceError: Cannot access 'y' before initialization
let y = 10;
function — полностью поднимается, сразу же доступнаvar — поднимается, инициализируется как undefinedlet / const — поднимается, но заблокирована TDZ до объявленияПонимание hoisting помогает избежать неочевидных ошибок, возникающих при обращении к переменным до их определения. Предпочтение let и const вместо var считается хорошей практикой, потому что TDZ делает такие ошибки явными и предсказуемыми, а не молча возвращает undefined.
Объявления функций полностью всплывают, что означает, что и объявление, и тело функции доступны до начала выполнения кода.
Новый — ещё не проверен сообществом
Вы