Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建javascript全局可访问的静态变量?_Javascript_Static_Global Variables - Fatal编程技术网

如何创建javascript全局可访问的静态变量?

如何创建javascript全局可访问的静态变量?,javascript,static,global-variables,Javascript,Static,Global Variables,我想创建一个全局可访问的变量。 当我们想要改变的时候,它必须改变。 更改后,必须给出更改后的值 var language ="english"; function getGlobalVar(varName) { if(varName == "language"){ return language; } } function setGlobalVar(varName, value) { if(varName == "language"){

我想创建一个全局可访问的变量。 当我们想要改变的时候,它必须改变。 更改后,必须给出更改后的值

var language ="english";

function getGlobalVar(varName) {
    if(varName == "language"){
        return language;
    }
}

function setGlobalVar(varName, value) {
    if(varName == "language"){
       language = value;
    }
}

当我们在其他页面中使用getGlobalVar(“语言”)时,它必须给出更改后的值

全局变量只是附加到
窗口的变量

window.language = 'english';

function getGlobalVar(bar) {
  return window[bar];
}
建议您创建自己的命名空间,以避免以后出现问题:

window.MY = {};
MY.language = 'english';

全局变量只是附加到
窗口的变量

window.language = 'english';

function getGlobalVar(bar) {
  return window[bar];
}
建议您创建自己的命名空间,以避免以后出现问题:

window.MY = {};
MY.language = 'english';
当我们在其他页面中使用getGlobalVar(“语言”)时,它必须给出 变化值

web使用无状态协议,即信息不会在页面之间持久存在。为了解决这个问题,您可以在客户端或服务器端解决方案(如会话)上使用cookie

试试这个:

1.htm


window.val=“你好,世界”;
警报(window.val);
window.location.href=“2.htm”
2.htm


警报(window.val);
cookie示例:

1.htm


一年内的var=新日期();
in_one_year.setFullYear(in_one_year.getFullYear()+1);
document.cookie=“语言=英语”+
“expires=“+一年后。togmString();
所有_cookies=document.cookie
警报(所有Cookie);
window.location.href=“2.htm”
2.htm


警报(document.cookie);
当我们在其他页面中使用getGlobalVar(“语言”)时,它必须给出 变化值

web使用无状态协议,即信息不会在页面之间持久存在。为了解决这个问题,您可以在客户端或服务器端解决方案(如会话)上使用cookie

试试这个:

1.htm


window.val=“你好,世界”;
警报(window.val);
window.location.href=“2.htm”
2.htm


警报(window.val);
cookie示例:

1.htm


一年内的var=新日期();
in_one_year.setFullYear(in_one_year.getFullYear()+1);
document.cookie=“语言=英语”+
“expires=“+一年后。togmString();
所有_cookies=document.cookie
警报(所有Cookie);
window.location.href=“2.htm”
2.htm


警报(document.cookie);

对于大多数支持本地存储的浏览器来说,这是另一种解决方案


对于大多数支持本地存储的浏览器来说,这是另一种解决方案


这意味着每次我们引用javascript文件时,它都会给出新实例?这与js文件无关。如果您使用js将值附加到网页的窗口对象,则当加载新页面时,没有信息持续存在,也就是说,新页面的窗口对象将不会附加任何值。我们是否可以在JavaScript文件中创建一个静态变量,在不将变量附加到窗口对象的情况下跨页面持久化?您必须了解www使用无状态协议。在你理解这意味着什么之前,你无法理解网络编程。好吧,我明白你所说的js文件的意思了。您当然可以为javascript类创建静态变量。但是,当新页面加载时,该页面需要加载js文件才能访问该类。您的js文件将重新加载,就该页面而言,这是该类第一次被使用,静态变量将有其初始状态。这意味着每次我们引用javascript文件时,它都会给出新实例?这与js文件无关。如果您使用js将值附加到网页的窗口对象,则当加载新页面时,没有信息持续存在,也就是说,新页面的窗口对象将不会附加任何值。我们是否可以在JavaScript文件中创建一个静态变量,在不将变量附加到窗口对象的情况下跨页面持久化?您必须了解www使用无状态协议。在你理解这意味着什么之前,你无法理解网络编程。好吧,我明白你所说的js文件的意思了。您当然可以为javascript类创建静态变量。但是,当新页面加载时,该页面需要加载js文件才能访问该类。你的js文件将重新加载,就这个页面而言,这是该类第一次被使用,静态变量将有其初始状态。我认为这个答案可以解决我的全局变量问题。但是使用它,我们不能跨页面创建静态变量。现在我认为在JavaScript中跨页面创建静态变量是不可能的。您可以使用history api并在URL中传递它们,或者使用localStorage。我认为这个答案可以解决我的全局变量问题。但是使用它,我们不能跨页面创建静态变量。现在我认为在JavaScript中跨页面创建静态变量是不可能的。您可以使用history api并将它们传递到URL中,或者使用localStorage。
<script type="text/javascript">
    var in_one_year = new Date();
    in_one_year.setFullYear(in_one_year.getFullYear() + 1);
    document.cookie = "language=English" +
                      ";expires=" + in_one_year.toGMTString();


    all_cookies = document.cookie
    alert(all_cookies);
    window.location.href = "2.htm"
</script>
<script type="text/javascript">
    alert(document.cookie);
</script>