我正在关注维基百科的示例:
var counter = (function(){
var i = 0;
return {
get: function(){
return i;
},
set: function( val ){
i = val;
},
increment: function() {
return ++i;
}
};
}());
我知道里面有一个闭包,其中包含带有i
变量的堆栈帧,我可以创建多个计数器 - 这很清楚。但是为什么这里使用 IIFE 语法呢?如果它在没有它的情况下重写代码,它的工作方式相同:
var counter2 = function(){
var i = 0;
return {
get: function(){
return i;
},
set: function( val ){
i = val;
},
increment: function() {
return ++i;
}
};
};
c2 = counter2();
我很感激在维基百科的例子中解释 IIFE 在做什么。