使用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};
};
答案 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
};