Javascript 在页面初始化时声明全局变量

Javascript 在页面初始化时声明全局变量,javascript,Javascript,我让web应用程序根据加载的页面运行initialize方法 我需要全局变量,只能用于第1页,共2页。所以我要做的是,仅当第1页被加载时,才定义并初始化一个全局变量。我肯定有办法做到这一点,但我不知道如何做到 我粘贴了我的相关初始化方法和我需要的两个全局初始化方法。目前,它们在第1页重新加载和第2页重新加载时都已定义和初始化 我希望它们只为第1页重新加载定义一个初始化 /******************** group:globals ********************/ var l

我让web应用程序根据加载的页面运行initialize方法

我需要全局变量,只能用于第1页,共2页。所以我要做的是,仅当第1页被加载时,才定义并初始化一个全局变量。我肯定有办法做到这一点,但我不知道如何做到

我粘贴了我的相关初始化方法和我需要的两个全局初始化方法。目前,它们在第1页重新加载和第2页重新加载时都已定义和初始化

我希望它们只为第1页重新加载定义一个初始化

/********************
group:globals
********************/

var local = 
  { 
  client_validation:1,
  persistent_element:'hide_1'
  };

window.onload=initialize_page;

/* 
- initialize_page() - function activated on each page load or reload.  Set by global window.onload
*/

function initialize_page()
  {
  var signin_found;
  /*Used to determine which page is loaded / reloaded*/
  if(signin_found=document.getElementById('signin_button')) 
    {
    signin_found.onclick=interface_signin;
    /*Interfaces and bindings*/

我认为,考虑到所讨论的变量使用的是可忽略的内存,您可能会将其过于复杂化,但无论如何,我能想到的最简单的方法是:

function initialize_page() {
   if (/* somehow figure out if you're on page one */) {
      window.local = {
         client_validation:1,
         persistent_element:'hide_1'
      };
   }

   // etc.
}
请注意,不能通过将
var
语句放入
if
:JavaScript没有块作用域(仅函数作用域)来有条件地声明变量,因此它会将声明“提升”到
if
之外。但是在全局变量的情况下,您可以绕过这个问题,因为全局变量本质上只是
窗口
对象的属性,所以您可以有条件地创建属性,如上所示

如果您后来意识到这两个页面有某些共同的变量,但也有各自的独立需求,您可以这样做:

var local = {
   commonSetting1 : "something",
   commonSetting2 : "something else"
}

function initialize_page() {
    if (/* page one? */) {
       // add page one's settings
       local["client_validation"] = 1;
       local["persistent_element"] = "hide_1";
    } else if (/* page two? */) {
       // add page two's settings
       local["somePageTwoSetting"] = "whatever";
       // etc.
    }
}

对在全局范围内说
var local
相当于在
窗口上声明一个名为
local
的属性。在赋值语句
window.local=…
之后,您应该能够以
local
的身份直接访问它,而无需使用
窗口。
前缀。(您会发现相反的情况也是如此:使用
var somename
创建的全局变量可以通过
窗口访问。somename
)试试看。。。