全局!参见[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.
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.
如果你在这段下面再定交个function,照样能用