// Functions can see changes in variable values after the function is defined var myFunction = function() { var foo = "hello"; var myFn = function() { console.log( foo ); }; foo = "world"; return myFn; }; var f = myFunction(); f(); // "world"
?
// Scope insanity // a self-executing anonymous function (function() { var baz = 1; var bim = function() { alert( baz ); }; bar = function() { alert( baz ); }; })(); // baz is not defined outside of the function console.log( baz ); // bar is defined outside of the anonymous function // because it wasn't declared with var; furthermore, // because it was defined in the same scope as baz, // it has access to baz even though other code // outside of the function does not bar(); // bim is not defined outside of the anonymous function, // so this will result in an error bim();
?
?
来自jquery的教学课程:?http://learn.jquery.com/javascript-101/scope/