Какова область действия функции внутри блока в JavaScript?
Что я знаю, так это то, что объявления функций поднимаются в верхнюю часть включающей функции. Итак, рассмотрим код ниже:
{
function foo(num) {
console.log("foo: " + num)
count++
}
function getCount() {
return count
}
let count = 0
}
foo(1)
foo(2)
foo(3)
console.log(getCount())
Насколько я понимаю, после подъема приведенный выше код должен стать:
function foo(num) {
console.log("foo: " + num)
count++
}
function getCount() {
return count
}
{
let count = 0
}
foo(1)
foo(2)
foo(3)
console.log(getCount())
Если это правда, то при выполнении getCount() я должен столкнуться с ошибкой, что getCount() не может получить доступ к переменной count. Однако я получаю результат как 3, что означает, что функция getCount() действительно имеет доступ к переменной count, которая является локальной по отношению к блоку, который ее включает. Как такое возможно? Это закрытие? Объясните пожалуйста.