解决方案1:闭包解决方案2:拆分结构解决方案3:let解决方案4:setTimeout第三个参数。setTimeout会先将回调函数放到等待队列中,等待区域内其他主程序执行完毕后,按时间顺序先进先出执行回调函数。
JavaScript的闭包是一个特色。2变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。这就是Javascript语言特有的“链式作用域”结构,子对象会一级一级地向上寻找所有父对象的变量。