对var和let作用域用闭包的特性做最好的解释

被let定义的i存在for循环每次独立的作用域内,该作用域下的i是几被保留住以后就是几,进行累加操作以后就会对当前各自作用域下的i发生事件。

而没有作用域限制的var所定义的i已经成为全局变量了,结果中的4是延迟5秒输出的第一个i值,此时的i并不是我们所期望的第一个for所产生的0了,因为从被var定义开始i就是一个全局的变量!

 

可以自己为i创建独立的函数环境,在该环境下,var的结果就可以符合预期的效果了。

 

原文地址:https://www.cnblogs.com/uX-180506/p/12427056.html