closure
by basecss
JavaScript
function asyncFunction(callback){
setTimeout(function(){
callback();
}, 1000);
}
var color = 'blue';
(function(color){
asyncFunction(function(){
alert('color = ' + color); // red
});
})(color);
color = 'red';
// 立即调用的匿名函数形成了一个闭包, 传递给匿名函数的是初试化时定义的 color = blue, 而外层作用域中 color 的变化并不会影响闭包环境内的代码.