避免Node中的全局变量的最佳做法?

时间:2016-04-03 23:01:19

标签: javascript scope global

使用Node。

试图避免全局变量,但我需要在两个非嵌套函数之间共享一个变量(整数)。这两个函数都直接在全局范围内声明。

对于我想要完成的事情,这样的事情被认为是一种很好的做法吗?如果没有,是否有更好的模式可供遵循?

function doStuffWithDataFromEventListener(){           
    var a = inner2().num;
}();

var fakeListener = function(){ //make believe event listener that is only called once.
   var num = 7;
   return {num: num};
};

2 个答案:

答案 0 :(得分:0)

使用模块模式:

 // Global scope

 (function(){

    // Function (module) scope

    var x = 5;  // Module level (not global) variable


    function a(){
         return ++x;
    }

    function b(){
         return ++x;
    }

    a();  // 6
    b();  // 7

 }());

答案 1 :(得分:0)

有几种控制/防止全局变量的方法是创建一个闭包函数并将所有代码放在那里。所有代码都将作为匿名函数在DOM中。您还可以为该函数指定一个名称,以便更容易测试。您还可以创建一个全局对象,并将所有方法,变量和属性附加到该对象上。我相信你以前见过这个。

var myAppObj = myAppObj || {};
myAppObj.name = "tommy";
MyAppObj.odStuffFunc = function() {
      // do stuff
};