Если объявить функцию, а после неё объявить переменную — будет ли к ней доступ внутри функции? Расскажи про hoisting.
Ответ от нейросети
sobes.tech AI
В JavaScript переменные и функции подвергаются механизму, называемому hoisting — подъёмом объявлений в начало области видимости.
Если объявить функцию, а после неё объявить переменную с тем же именем, то внутри функции доступ к переменной зависит от способа объявления:
- Переменные, объявленные через
var, поднимаются, но инициализируются значениемundefinedдо выполнения кода. - Функции полностью поднимаются, то есть их объявление и тело доступны до места объявления.
Пример:
function test() {
console.log(a); // undefined
var a = 5;
console.log(a); // 5
}
test();
Здесь var a поднимается, но инициализация происходит на месте, поэтому первый console.log выведет undefined.
Если же объявить функцию и потом переменную с тем же именем вне функции, внутри функции будет доступна функция, так как объявления функций поднимаются выше переменных.
Таким образом, hoisting — это механизм, при котором объявления переменных и функций поднимаются в начало своей области видимости, но инициализация переменных происходит в месте объявления.