我查了很多代码,而且我看到很多人在做
update()
所以,为什么不做呢
module.exports = (function(){
return {
functionA: function() {
}
},
functionB: function() {
}
};
})();
谢谢!
答案 0 :(得分:4)
您的第一个示例允许您隐藏其自己的闭包范围内的变量,这些变量可以与返回对象的方法共享。例如,如果您执行了以下操作...
var foo = (function(){
var x = 2;
return {
addToTwo: function(y){
return x + y;
},
subtractFromTwo: function(y){
return x - y;
}
}
};
上面的示例显示x
变量受addToTwo
和subtractFromTwo
保护并共享。第二个示例仅允许您将x
作为对象的一部分而没有相同的保护。
module.exports = {
x: 3,
functionA: function() {
return this.x;
},
};
在此示例中可以更改 x
。
答案 1 :(得分:1)
那些完全一样。这是一个风格决定。
根据Node.js文档:
模块的本地变量将是私有的,就好像模块被包装在一个函数中一样。
你也可以这样做:
module.exports.functionA = function() {
};
module.exports.functionB = function() {
};
或者:
// either method for creating a function works
function functionA () {}
var functionB = function () {}
module.exports = {
functionA : functionA,
functionB : functionB
};
答案 2 :(得分:0)
直接调用函数的一个最大优点是closures的使用不能以单独的方式使用,所以它们实际上并不相同。