从for循环中获取变量值

时间:2017-07-20 16:36:39

标签: 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(current_city);

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

3 个答案:

答案 0 :(得分:1)

这种行为是正确的。你不断重新分配current_city的值,所以它只记录最后一个。如果您想要全部记录,只需在循环内移动console.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);
}

答案 1 :(得分:1)

您只需将var current_city设置为let current_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.

答案 2 :(得分:0)

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

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