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

Joh*_*Doe 4 javascript

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

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

      }
    },
    functionB: function() {

    }
  };
})();
Run Code Online (Sandbox Code Playgroud)

所以,为什么不只是做

module.exports = {
  functionA: function() {

  },
  functionB: function() {

  }
};
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 5

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

var foo = (function(){
   var x = 2;
      return {
        addToTwo: function(y){
        return x + y;
      },
      subtractFromTwo: function(y){
        return x - y;
      }
   }
};
Run Code Online (Sandbox Code Playgroud)

上面的示例示出了x可变保护和之间共享addToTwosubtractFromTwo。第二个示例仅使您可以x在没有相同保护的情况下将其作为对象的一部分。

module.exports = {
  x: 3,
  functionA: function() {
     return this.x;
  },

};
Run Code Online (Sandbox Code Playgroud)

x 在此示例中可以更改。