Maison  >  Questions et réponses  >  le corps du texte

关于匿名自执行函数的问题

以下两种代码有什么区别?有何有缺点?谢谢

//第一种var counter = (function(){    var i = 0;    return {
        get: function(){            return i;
        },
        set: function(val){
            i = val;
        },
        increment: function(){            return ++i;
        }
    }
}());
//第二种var counter = {    var i = 0;
    get: function(){            return i;
    },
    set: function(val){
            i = val;
    },
    increment: function(){            return ++i;
    }
}


一辆想出轨的无轨电车一辆想出轨的无轨电车2804 Il y a quelques jours1034

répondre à tous(2)je répondrai

  • 数据分析师

    数据分析师2017-10-01 00:17:01

    Questions sur les fonctions auto-exécutables anonymes - Questions et réponses sur le site Web chinois PHP - Questions sur les fonctions auto-exécutables anonymes - Questions et réponses sur le site Web chinois PHP

    Jetez un œil autour de vous et apprenez.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-02-14 11:07:11

    第二种是对象字面量的书写方式,但你的写法是错误的,正确写法应该是:

    var counter = {
        i: 0,
        get: function(){            return this.i;
        },
        set: function(val){            this.i = val;
        },
        increment: function(){            return ++this.i;
        }
    }

    这种写法不会隔离作用域,也就是说外部可以直接访问内部的属性,并可以修改他,如:count.i。
    而第一种写法实际上是一种闭包,他可以避免这个问题,即外部环境只能通过你暴露的接口访问内部属性,很好的隔离了作用域。但缺点是可能会造成内存泄漏,用大量闭包也会占用大量内存。

    répondre
    0
  • Annulerrépondre