for循环前面的变量名定义

Ива*_*вац 0 javascript

给出来自Javascript的代码段好的部分(第24页):

var name;
for (name in another_stooge) {
    if (typeof another_stooge[name] !== 'function') {
        document.writeln(name + ": " + another_stooge[name]);
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么namefor in循环中使用之前有变量的定义,因为没有它就可以工作?

Que*_*tin 8

这里有两个不同的注意事项.

VAR

如果没有var,变量将是全局变量,除非它已在更广泛的范围内声明.(在严格模式下,这将是一个错误而不是全局).

在循环之前

你可以,for (var name…但这使得发现var声明变得更加困难.

Douglas Crockford(The Good Parts的作者,在这里非常相关)主张在函数顶部声明所有局部变量,这样你就有了一个地方可以找到你的范围.