让我们考虑简单的单例实现:
var singleton = function (Constructor) {
var singleton;
return function () {
if (!singleton) {
singleton = new Constructor();
}
return singleton;
};
};
我们可以将单例变量的声明移至参数:
var singleton = function (Constructor, singleton) {
return function () {
if (!singleton) {
singleton = new Constructor();
}
return singleton;
};
};
所以我只是对副作用感到好奇。
再举一个例子:
var counter = (function (i) {
return function () {
i = (i || 0) + 1;
return i;
};
}());