我所知道的是,函数声明被提升到封闭函数的顶部。因此,请考虑以下代码:
{
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',该变量在包围它的块中是本地的。怎么可能?这是关闭吗?请解释。