Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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_Jquery - Fatal编程技术网

如何在JavaScript中设置全局变量和全局函数

如何在JavaScript中设置全局变量和全局函数,javascript,jquery,Javascript,Jquery,在我的language.js中,我有: function setCookie(cookie) { var Days = 30; //this cookie will keep 30 days var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); document.cookie = cookie + ";expi

在我的
language.js
中,我有:

function setCookie(cookie) {
  var Days = 30; //this cookie will keep 30 days 
  var exp = new Date(); //new Date("December 31, 9998");
  exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
  document.cookie = cookie + ";expires=" + exp.toGMTString();
}

function setLanguage(lang) {
  setCookie("lang=" + lang + "; path=/;");
  translate(lang);
}
稍后:

switch (getCookieVal("lang")) {
  case "en":
    setLanguage("en");
    break
  case "zh":
    setLanguage("zh");
    break
  default:
    setLanguage(systemLang);
}
这使得
console.log(getCookieVal(“lang”)打印出
zh
。总之,如果在另一个名为
data.js
的文件中使用
console.log(getCookieVal(“lang”))
,它就不起作用了

我确实需要使用
getCookieVal(“lang”)
根据cookie语言确定要使用的变量

以下是完整的代码:

var dict = {};
var systemLang = navigator.language.toLowerCase().slice(0, 2);

我已经从包装器中取出了函数,所以现在应该是全局函数,但它仍然没有定义。让问题变得简单。您知道,我将
systemLang
作为全局变量,但在其他
.js
文件中使用
console.log(systemLang)
。它没有定义。

听起来这些函数好像在某种包装器中,比如jQuery
ready
回调:

$(function() {
    function setCookie(cookie) {
        // ...
    }
    function setLanguage(lang) {
        // ...
    }
});
或是一种范围界定的生活:

(function() {
    function setCookie(cookie) {
        // ...
    }
    function setLanguage(lang) {
        // ...
    }
})();
这意味着它们不是全球性的。如果希望它们是全局的,请确保它们是在顶级声明的,而不是在任何内容中声明的:

function setCookie(cookie) {
    // ...
}
function setLanguage(lang) {
    // ...
}
JavaScript不注意函数在哪个文件中(除非您使用模块,但我不认为您是),所有全局变量都是真正的全局变量,不管文件是什么


我应该注意到,使用globals通常不是最佳实践。浏览器上的全局命名空间非常拥挤。相反,请查看一个文件中的各种模块绑定器等。

setItem('TheVariableNameYouWant',VariableYouwant的值)

在另一个文件中
localStorage.getItem('TheVariableNameYouWant')

“…它不工作…”不工作如何?您在控制台中看到了哪些错误?我可以在另一个js文件中使用getCookieVal(“lang”)吗???我不熟悉Java脚本。我不知道如何使函数全局化“我可以在另一个js文件中使用getCookieVal(“lang”)吗?”如果它包含在页面中,则是。是的,您可以。(请看我的答案。)但请在网络控制台中查找错误。这表明我的答案是正确的。我上传了完整的代码。。。你能告诉我在另一个Js文件中调用console.log(getCookieVal(“lang”)的方法吗???我需要使用getCookieVal(getCookieVal(“lang”))来知道哪种语言是页面,并根据中的lang更改变量cookie@12345GG-如上所述,将函数移出它们所在的函数包装器。