以下代码记录5,5,5,5,5。
for (var i = 0; i<5; i++){
setTimeout(
function (){console.log(i)},
1000
)
}
在ES5中,有各种修复程序使其记录为0、1、2、3、4。在ES6中,您可以使用let而不是var声明i,然后它记录0、1、2、3、4。
我不知道为什么这行得通。我以为我明白让我们将定义限制在代码块中,但是我仍然不明白为什么它可以工作。