我对 for 循环中的 javascript let 和 var 感到困惑?

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

这是我的循环代码

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

它的输出与需要的相同,但我不确定为什么需要 Let 声明。我了解 VAR 和 LET 的概念,但不确定在哪些情况下 var 会在 for 循环中产生问题?

请任何人帮助我理解这个概念。我是新手,正在努力弄清楚:)

感谢您的帮助。

当您使用var时:

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

当你使用let

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

let 在 ES6 中将创建 块作用域到函数作用域