我目前在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'。
答案 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