关于javascript:从for循环中获取变量值

Getting variable value out of for loop

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

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

1
2
3
4
5
6
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);

它在for循环之外打印'kolkata'。


您只需将var current_city设置为let current_city即可。。。

1
2
3
4
5
6
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.

这种行为是正确的。 你不断重新分配current_city的值,所以它只记录最后一个。 如果您希望它们全部记录,只需在循环内移动console.log即可。

1
2
3
4
5
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);
}


JavaScript没有块范围,只有函数范围。 由于current_city的初始化在一个函数内,因此该变量可在同一函数中的任何其他位置访问。 这些变量不是循环的局部变量,即它们与for循环所在的范围相同。

您不断重新分配current_city的值,以便在循环结束时为数组分配最后一项。 因此,您得到结果kolkata