我开始读这个: --这是使其成为可能的基本构造,实际上也是JavaScript唯一的最佳特性。我们只需创建一个匿名函数,并立即执行它。在函数中运行的所有代码都处于闭包状态,它在应用程序的整个生命周期内提供隐私和state。vars and functions are in this scope only
// still maintains access to all globals
我不明白如何解释下面的代码,为什么它不能像预期的那样工作: console.log如果我对此有一个有根据的猜测,那就是var的作用域被绑定到函数块,或者在这种情况下是全局作用域,并且for循环将击败setTimeout()将生成的调用堆栈,并且由于Javascript是词法作用域,它将所有这些函数回调为var i = 16,而另一方面,let i = 16将把它保