ES6与let的混淆

时间:2018-09-26 23:52:35

标签: ecmascript-6 let

以下代码记录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。

我不知道为什么这行得通。我以为我明白让我们将定义限制在代码块中,但是我仍然不明白为什么它可以工作。

0 个答案:

没有答案