除了用闭包少几行代码外还有什么好处啊?最好举个实例 来对比下。有没有非用闭包的例子啊?

解决方案 »

  1.   


    一个经典的例子function addGenerator(num)
      

  2.   

    function addGenerator(num){
      return funciton(toAdd) {
         return num + toAdd
    };
    }
      

  3.   

    1.减少命名混杂问题
    2.事件代理改变this
    3.可以开辟一个独立的作用域存储变量
    如 var m = function(){
                var num=1;
               return function(){
                 return num++
               }
          }()
        m()//没掉一次num都加一
      

  4.   

    这是fp里的一个curry化技术。也就是使代码简洁等。
      

  5.   

    http://www.wxwdesign.cn/article/skills/closure_memory_ie.htm
      

  6.   

    这是一个简单的例子:构造对象中加入元素的事件。如果事件中要访问对象,不能只用使用this,而需要一个闭包处理
    function Node() {
        this.title = "Zswang 路过";
        var self = this;
        var btn = document.createElement("button");
        document.body.appendChild(btn);
        btn.value = "测试";
        btn.title = "一个测试的按钮";
        btn.onclick = function() {
            alert(this.title); // 则是访问按钮自己的title属性
            alert(self.title);
        }
    }new Node();另外,爱用不用,为何还要给你理由?关我啥事。
      

  7.   


    谢谢。我感觉这个好像是讲 this 的引用
      

  8.   

    我是个新手,不过我觉得闭包的优势在于自己实际应用中该怎么用,
    在其他不支持闭包的语言中:
    a = 1;
    function test(any){
        return any+1;
    }
    print(test(a));而闭包中
    a = 1;
    function test(){
        return a+1;
    }
    alert(test());