先了解程序的执行上下文,
创建执行上下文需要创建作用域链、变量对象、this
重点了解作用域链
作用域链包含当前变量对象和所有父级的变量对象,当前变量对象放在首位
- 则最内层的作用域链包含了所有上下文的变量对象,这意味着在最内层能够获得父级的变量,从而使最外层(全局执行上下文)能够通过最内层获得其他作用域的变量对象 *
循环中回调函数setTimeout会先交给浏览器加入任务队列,等待执行完中所有作用域的程序执行完毕才会执行任务队列中的任务
在循环中声明一个立即执行函数function使得每次循环都能得到对应的值
PS:图片引自B站up主技术蛋老师