JavaScript块中的函数范围是什么?

时间:2019-12-17 12:44:51

标签: javascript scope hoisting javascript-scope

我所知道的是,函数声明被提升到封闭函数的顶部。因此,请考虑以下代码:

{
    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',该变量在包围它的块中是本地的。怎么可能?这是关闭吗?请解释。

0 个答案:

没有答案