作用域与闭包观察器

先创建一个计数器闭包,再反复调用返回的函数。观察重点:外层函数已经执行完毕,但它的私有变量仍能被返回函数访问。

还没有创建闭包

作用域盒子

调用 0 次
makeCounter() 的外层作用域 未运行
count 只属于 makeCounter 的词法环境 ?

点击“创建闭包”后,这个外层函数会运行一次并返回内部函数。

返回的 counter 函数 未创建
window.count

全局作用域里没有名为 count 的变量。

调用日志

等待操作
创建闭包后,调用记录会出现在这里。

    当前结论

    观察中

    闭包出现的条件:内部函数被返回,并且这个内部函数还在使用外层变量。

    这里的 count 不会变成全局变量。它留在返回函数记住的词法环境里。