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