javascript let和var for循环混淆了?

I am confused with javascript let and var in for loop?

本问题已经有最佳答案,请猛点这里访问。

这是我的循环代码

1
2
3
4
var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat'];
for(var i in username){
  console.log(username[i]);
}

它输出的结果和需要的一样,但我不知道为什么要让声明需要。我了解VaR的概念,但不确定在哪些情况下,VaR会在for循环中创建问题?

任何人请帮助我理解这个概念。我是新来的Noob,想知道:)

谢谢你的帮助。


使用var时:

1
2
3
4
5
var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat'];
for(var i in username){
  console.log(username[i]);
}
i // 3

使用let

1
2
3
4
5
var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat'];
for(let i in username){
  console.log(username[i]);
}
i // Uncaught ReferenceError: i is not defined

ES6中的let将创建块范围到功能范围