闭包：js这样写有什么好处？
很多地方都可以看到js代码用
```
(function($){
    //代码
    var demo = function(){
    
    };
    
    var demo2 = function(){
    
    };    
})(jQuery)
```
这样包起来，这是js闭包吧。把js代码写到这个里面有什么好处呢？
```
<script type="text/javascript">
    (function($){
        var hehe = funcion(){
            alert('hehe');
        };
    })(jQuery);
</script>
```
这是一个立即执行匿名函数，同时也是一个闭包。
闭包的作用主要有两个：减少全局变量，保护变量
举两个例子请您揣摩：
```
// 第一例：
var a = function(){
    alert('global');
};
(function(){
    var a = function(){
        alert('closure');
    }
    a();
})();
a();


// 第二例：
var setter = function(){
    var privateVar;
    return {
        set: function(v){
            privateVar = v;
        },
        get: function(){
            return privateVar;
        }
    };
}();

setter.set('hello world');
setter.get();
```