在JavaScript的for循环内setTimeout函数的行为?

时间:2019-05-17 07:49:54

标签: javascript ecmascript-5

我对for循环内setTimeout函数的行为有疑问。

情况1:

for (let i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(i)
  })
}

因为我使用过let,所以它在控制台中打印0、1、2、3、4。但是每次我运行此代码时,都会得到一些随机数,如下图所示。数字代表什么? enter image description here

情况2:

for (var i = 0; i < 5; i++) {
  setTimeout(function() {
    console.log(i)
  })
}

当我使用var运行时,我得到的输出是图像中提到的5倍,为5倍,我还想知道它与使用let关键字有何不同?enter image description here

这个问题与之前提出的问题几乎没有什么不同,我已经解决了这个问题,没有给我解决方案现在我所期望的吗?

0 个答案:

没有答案