我在关注wikipedia's example
var counter = (function(){
var i = 0;
return {
get: function(){
return i;
},
set: function( val ){
i = val;
},
increment: function() {
return ++i;
}
};
}());
我知道里面有一个闭包,它用i
变量保存堆栈帧,我可以创建多个计数器--这很清楚。但是为什么这里要使用Life语法呢?如果它在没有它的情况下重写代码,它的工作方式是相同的:
var counter2 = function(){
var i = 0;
return {
get: function(){
return i;
},
set: function( val ){
i = val;
},
increment: function() {
return ++i;
}
};
};
c2 = counter2();
我希望能在维基百科的例子中解释一下生活是怎么回事。
发布于 2013-06-25 01:34:47
不同之处在于您实际定义了一个函数。在您的变体中,counter2仍将作为object c2的原型保存在内存中。
当您只创建特定类型的单个对象而不是原型以供以后重用时,可以使用Iffys。
发布于 2013-06-25 01:27:46
立即调用该函数将使其成为匿名的。这样做的好处是,您不会在名称空间中添加以后不需要的函数名。
没有其他区别,它可能看起来像一个细节,但是如果你不重用它,为什么要命名这个函数呢?
https://stackoverflow.com/questions/17281404
复制相似问题