Javascript:变量范围和全局变量的邪恶

Nic*_*ick 2 javascript variables ajax global

我想要好,我真的,但我看不出怎么做:)

关于如何不使用全球的任何建议将不胜感激.我们称之为全球G.

Function A 
  Builds G by AJAX

Function B
  Uses G

Function C
  Calls B
  Called by numerous event handlers attached to DOM elements (type 1)

Function D
  Calls B
  Called by numerous event handlers attached to DOM elements (type 2)
Run Code Online (Sandbox Code Playgroud)

我无法看到我如何在这里使用全局.DOM元素(类型1和2)是在与A无关的其他函数(E&F)中创建的.我不想将G添加到每个事件处理程序(因为它很大并且有很多这些事件处理程序),并且正在执行因此需要与我在这里寻求相同类型的解决方案(即将G加入E&F).

全局G,BTW,是构建其他元素所必需的数组,因为它们又由AJAX构建.

我也不相信单身人士是真正的解决方案.

谢谢.

Ry-*_*Ry- 6

当然,把所有东西都放在一个立即执行的大功能中!

(function() {
    // Your code goes here
})(); // Called right away
Run Code Online (Sandbox Code Playgroud)

你可以把任何东西放在那里,它可以在更窄的范围内访问,但它们仍然不是全局的.

此外,如果你的文件是唯一的文件,请停止避免使用全局文件,因为除非你正在制作某种可重用的组件,否则确实没有任何损害.