在for-loop,javascript中声明的变量的范围

Fil*_*und 0 javascript eclipse

我在eclipse中遇到错误:

for (var i = 0; i < foo; i++) {
    ...
}
...
while (someCondition) {
    for (var i = 0; i < bar; i++) {
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

循环使用相同的变量名称.Eclipse给了我一个警告'i' is already defined.如果我删除第二个for循环的var som,它不会给我一个警告.

AFAIK在for循环中声明的变量(i在本例中)与循环具有相同的范围.

Eclipse正确吗?这些i变量是否在同一范围内?

Ama*_*dan 7

JavaScript中的局部变量作用于封闭函数.因此,两者i具有相同的范围.

为了显示,

function f() {
  ...
  for (var i = ...; ...; ...) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

相当于

function f() {
  var i;
  ...
  for (i = ...; ...; ...) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)