如何在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)
。它没有定义。听起来这些函数好像在某种包装器中,比如jQueryready
回调:
$(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-如上所述,将函数移出它们所在的函数包装器。