使用自调用函数导出函数比直接返回有什么好处

时间:2015-07-10 21:34:27

标签: javascript

我查了很多代码,而且我看到很多人在做

update()

所以,为什么不做呢

module.exports = (function(){
  return {
    functionA: function() {

      }
    },
    functionB: function() {

    }
  };
})();

谢谢!

3 个答案:

答案 0 :(得分:4)

您的第一个示例允许您隐藏其自己的闭包范围内的变量,这些变量可以与返回对象的方法共享。例如,如果您执行了以下操作...

var foo = (function(){
   var x = 2;
      return {
        addToTwo: function(y){
        return x + y;
      },
      subtractFromTwo: function(y){
        return x - y;
      }
   }
};

上面的示例显示x变量受addToTwosubtractFromTwo保护并共享。第二个示例仅允许您将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的使用不能以单独的方式使用,所以它们实际上并不相同。