Javascript变量let差异

Javascript变量let差异,javascript,Javascript,此代码的输出为0 1 2 3 4 for (let i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }, i * 1000 ); } for(设i=0;i

此代码的输出为0 1 2 3 4

for (let i = 0; i < 5; i++) {
  setTimeout(function() { console.log(i); }, i * 1000 );
}
for(设i=0;i<5;i++){
setTimeout(函数(){console.log(i);},i*1000);
}
这个代码的输出是5

for (var i = 0; i < 5; i++) {
  setTimeout(function() { console.log(i); }, i * 1000 );
}
for(变量i=0;i<5;i++){
setTimeout(函数(){console.log(i);},i*1000);
}

我理解var和let的区别在于作用域。但我在这里不明白。为什么输出如此不同。

这是否回答了您的问题?