我有很多aspx页面(50+)。 我需要在每个页面中声明一个(5-7)个全局变量。 一页中的变量独立于其他页面,即使有些页面可能相同。
目前我在任何功能的页面顶部和外部声明。
我应该采用不同的方法吗?这种方法有任何副作用吗?
如果完全重复,请告诉我。 感谢
答案 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;
设置全局变量,以便至少在表面上保持干净。