【发布时间】:2016-07-23 09:13:55
【问题描述】:
使用节点。
试图避免全局变量,但我需要在两个未嵌套的函数之间共享一个变量(整数)。这两个函数都直接在全局范围内声明。
对于我想要完成的事情,这样的事情是否被认为是一种好习惯?如果没有,是否有更好的模式可以遵循?
function doStuffWithDataFromEventListener(){
var a = inner2().num;
}();
var fakeListener = function(){ //make believe event listener that is only called once.
var num = 7;
return {num: num};
};
【问题讨论】:
-
为什么不直接
return 7? -
调用函数以返回值并不能解决您的全局问题,因为您仍然拥有
globalNum,如果您刚刚执行var globalNum = 7;,您将拥有它。您可以将代码包装在 IIFE 中,然后不会泄漏到全局。 -
@elclanrs 我的印象是对象作为引用返回,而基元作为值返回,
-
@Andy 我明白你的意思,我的例子没有解决任何问题。我正在使用节点。稍后会更新示例,因为我事后意识到它太模糊了
-
@cheestherapy:实际上在节点中你几乎没有全局变量;在一个模块中声明的所有顶级变量都在该模块自己的范围内 - 并且可以很好地使用。
标签: javascript scope global