" let"之间的不同价值行为和" var"当作为参数传递给setTimeout时?

时间:2016-12-31 10:03:31

标签: javascript browser ecmascript-6

letvar之间的差异与词法范围和变量提升有关。但我从未见过变量值在作为参数传递时如何变化。 示例如下:

for(let i =1; i<=5; i++){
  setTimeout(
    ()=>{ console.log(i) }, 
    i*1000)
}

每秒打印输出[1,2,3,4,5]。

但是在使用var

for(var i =1; i<=5; i++){
  setTimeout(
    ()=>{ console.log(i) }, 
    i*1000)
}

每秒打印[6,6,6,6,6]。

0 个答案:

没有答案