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 的变化并不会影响闭包环境内的代码.