全局!参见[JavaScript: The Definitive Guide, 4th Edition]4.3.1 No Block Scope
Note that unlike C, C++, and Java, JavaScript does not have block-level scope. All variables declared in a function, no matter where they are declared, are defined throughout the function. In the following code, the variables i, j, and k all have the same scope: all three are defined throughout the body of the function. This would not be the case if the code were written in C, C++, or Java: function test(o) {    var i = 0;                         // i is defined throughout function    if (typeof o == "object") {        var j = 0;                     // j is defined everywhere, not just block        for(var k = 0; k < 10; k++) {  // k is defined everywhere, not just loop            document.write(k);        }        document.write(k);             // k is still defined: prints 10    }    document.write(j);                 // j is defined, but may not be initialized} 
The rule that all variables declared in a function are defined throughout the function can cause surprising results. The following code illustrates this: var scope = "global";function f(  ) {    alert(scope);         // Displays "undefined", not "global"    var scope = "local";  // Variable initialized here, but defined everywhere    alert(scope);         // Displays "local"}f(  ); 
You might think that the first call to alert( ) would display "global", since the var statement declaring the local variable has not yet been executed. Because of the scope rules, however, this is not what happens. The local variable is defined throughout the body of the function, which means the global variable by the same name is hidden throughout the function. Although the local variable is defined throughout, it is not actually initialized until the var statement is executed. Thus, the function f in the previous example is equivalent to the following: function f(  ) {    var scope;        // Local variable is declared at the start of the function    alert(scope);     // It exists here, but still has "undefined" value    scope = "local";  // Now we initialize it and give it a value    alert(scope);     // And here it has a value} 
This example illustrates why it is good programming practice to place all of your variable declarations together at the start of any function.