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

Raj*_*rma 7 javascript scope for-loop var let

这是我的循环代码

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

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

任何身体请帮助我理解这个概念.我是新的菜鸟,试图找出:)

谢谢你的帮助.

Tom*_*ion 12

当你使用var:

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

当你使用 let

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

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

  • 似乎没有人关心,但它让我感到困扰,值得一提的是:for...in 不应用于集合,它仅用于对象属性遍历,不保证遍历顺序。 (2认同)