Javascript 从for循环中获取变量值

Javascript 从for循环中获取变量值,javascript,Javascript,我目前正在javascript中使用for循环来迭代数组。 它工作正常,但我仍然可以在循环外获取for循环中使用的变量值。我找不到原因。 下面是代码片段 var list = ['delhi','mumbai','pune','kolkata']; for (let i = 0, max = list.length ; i < max ; i++ ){ var current_city = list[i]; //other code goes here } console.log

我目前正在javascript中使用for循环来迭代数组。 它工作正常,但我仍然可以在循环外获取for循环中使用的变量值。我找不到原因。 下面是代码片段

var list = ['delhi','mumbai','pune','kolkata'];
for (let i = 0, max = list.length ; i < max ; i++ ){
  var current_city =  list[i];
  //other code goes here
}
console.log(current_city);
var list=[“德里”、“孟买”、“浦那”、“加尔各答”];
for(设i=0,max=list.length;i

它在for循环外打印“加尔各答”。

这种行为是正确的。您不断重新分配
current\u city
的值,因此它只记录最后一个值。如果您想将它们全部记录下来,只需在循环中移动
控制台.log

var list = ['delhi','mumbai','pune','kolkata'];
for (let i = 0, max = list.length ; i < max ; i++ ){
  var current_city =  list[i];
console.log(current_city);
}
var list=[“德里”、“孟买”、“浦那”、“加尔各答”];
for(设i=0,max=list.length;i
您只需将
var current\u city
设置为
let current\u city

var list = ['delhi','mumbai','pune','kolkata'];
for (let i = 0, max = list.length ; i < max ; i++ ){
    let current_city =  list[i];
    //other code goes here
}
console.log(current_city); // shows error, as you expect.
var list=[“德里”、“孟买”、“浦那”、“加尔各答”];
for(设i=0,max=list.length;i
JavaScript没有块作用域,只有函数作用域。由于当前城市的初始化在一个函数中,因此该变量可在同一函数中的任何其他位置访问。这些变量不是循环的局部变量,即它们与for循环在同一范围内


您不断重新分配
current_city
的值,以便在循环结束时将数组中的最后一项分配给它。因此,你得到的结果是:你想打印循环中的所有城市吗?知道你想对当前城市做什么有助于给你一个更好的答案:)我不想打印循环中的所有城市。我在里面用它们做循环。但是我可以在for循环之外打印当前的_city变量,这对我来说很奇怪。我只是想知道为什么会发生这种情况。这种行为是正确的。对于变量范围,您可以参考此注释,如果您使用
let current_city=list[i](而不是
var
),则当前城市将不会被提升。它将不可用(并且,我相信,抛出一个ReferenceError)在循环之外。