如何干净地处理全局变量?

时间:2011-02-21 08:47:51

标签: javascript global-variables

我有很多aspx页面(50+)。 我需要在每个页面中声明一个(5-7)个全局变量。 一页中的变量独立于其他页面,即使有些页面可能相同。

目前我在任何功能的页面顶部和外部声明。

我应该采用不同的方法吗?这种方法有任何副作用吗?

如果完全重复,请告诉我。 感谢

3 个答案:

答案 0 :(得分:36)

最佳做法是不要混淆全球范围。特别是因为其他框架或插件脚本会污染或覆盖你的变种。

为自己创建一个命名空间

http://www.javascripttoolbox.com/bestpractices/#namespace

更多信息:https://stackoverflow.com/search?q=namespace+javascript+global

使用不同方法设置变量的一些示例

myOwnNS = {}; // or window.myOwnNS
myOwnNS.counter = 0;
myOwnNS["page1"] = { "specificForPage1":"This is page 1"}
myOwnNS.page2 = { "specificForPage2":"This is page 2", "pagenumber":2}
myOwnNS.whatPageAmIOn = function { return location.href.substring(location.href.lastIndexOf('page')+4)}

答案 1 :(得分:3)

正如@mplungjan所说,最佳做法是尽可能避免全局变量。

由于window是全局的,因此您可以使用window.NAMESPACE = {};

随时在任何函数内声明命名空间。

然后,您可以全局访问NAMESPACE,并在相同或其他函数中将您的值设置为属性:

NAMESPACE = { var1:"value", var2:"value" /* etc */ };

如果你可以在脚本文件中而不是直接在你的页面中完成所有这些,那就更好了,但我想你可能没有静态脚本中可用的值。

答案 2 :(得分:1)

一种方法是在“root”级别上声明变量,即在任何其他JS代码尝试访问它之前,在任何代码块之外。

您可以使用window.variablename = value;设置全局变量,以便至少在表面上保持干净。