在网页中我在哪里声明全局JavaScript变量?
我需要在哪里放置一段JavaScript代码,用于初始化一个变量,该变量必须对页面中执行的所有代码可见?(例如,元素上的事件处理程序需要访问此变量) 您可以在任何函数外执行,也可以在函数中执行,而无需使用'var'关键字。在任何其他脚本(可能位于页面顶部)之前分配该值,以便脚本可以读取该值 您也可以将其放在包含的JS文件中,但将其放在页面上通常更有用,因为您可以轻松查看全局值,并且可以通过服务器端代码对每个页面进行修改。同时尽量避免在正文中指定全局变量,这可能会造成混乱,并且更难阅读在网页中我在哪里声明全局JavaScript变量?,javascript,global-variables,Javascript,Global Variables,我需要在哪里放置一段JavaScript代码,用于初始化一个变量,该变量必须对页面中执行的所有代码可见?(例如,元素上的事件处理程序需要访问此变量) 您可以在任何函数外执行,也可以在函数中执行,而无需使用'var'关键字。在任何其他脚本(可能位于页面顶部)之前分配该值,以便脚本可以读取该值 您也可以将其放在包含的JS文件中,但将其放在页面上通常更有用,因为您可以轻松查看全局值,并且可以通过服务器端代码对每个页面进行修改。同时尽量避免在正文中指定全局变量,这可能会造成混乱,并且更难阅读 <h
<head>
<script>
var numberOfDucks = 1000; // Global
function some_function() {
// numberOfDucks is accessible here
alert (numberOfDucks);
// until you mask it by defining a local variable using the 'var' keyword
var myLocal = 0; // is a local
anotherGlobal = 0; // is a global
}
</script>
<script>
// potentially some other script
</script>
<script src="even_more_script.js">
</head>
变量numberOfDucks=1000;//全球的
函数some_函数(){
//这里有很多鸭子
警报(鸭子数量);
//直到通过使用“var”关键字定义局部变量来屏蔽它
var myLocal=0;//是本地
anotherGlobal=0;//是全局
}
//可能是其他脚本
在函数中定义全局(隐含全局)不是一个好主意,因为它会造成很多混乱。
<head>
<script>
var b = 0;
</script>
<script src="...">
</head>
<body>
...
</body>
var b=0;
...
在任何函数之外声明变量,这样它就会成为全局变量
(function() {
var local = 5;
})();
下面是一个全局变量的示例。第一个函数使用全局变量,但第二个函数使用具有相同名称的局部变量来屏蔽全局变量
var globalVar = 1;
function testFunc1 () {
globalVar = 2; //Updates the global variable
}
function testFunc2 () {
var globalVar = 5; // This variable masks the global and only updates within the scope of this function
globalVar = 3;
}
此外,您还提到,代码段必须在任何其他引用之前初始化全局。为此,我建议您尽可能将脚本块或对javascript文件的引用放在元素中任何其他javascript引用之前。如果您有其他依赖全局变量的javascript文件,那么您可能希望确保在使用defer属性首先加载页面的其余部分之前不会加载这些文件。见下文:
<script src="dependant.js" type="text/javascript" defer="defer"></script>
不使用全局变量的唯一方法是在函数范围内使用
var
关键字。其他任何东西都是全局变量
(function() {
var local = 5;
})();
无论函数是文本还是函数定义,它都是某种类型的函数
全局变量示例:
1:var global = 5;
上述内容不在函数范围内,因此即使使用了var
,也是全局的。
2.
(function() {
global = 5;
})();
在上面,没有使用var
,因此它成为一个隐含的全局变量。
3.
function foo(){}
(function() {
var local = global = 5;
})();
window.foo = 5;
this.x = 5;
with ( window ) { name = 'john'; }
foo
未在另一个函数中定义,也未分配给对象键以使其全局可访问。
4.
function foo(){}
(function() {
var local = global = 5;
})();
window.foo = 5;
this.x = 5;
with ( window ) { name = 'john'; }
使用var
执行多个赋值时,只有第一个变量变为局部变量。。。所以global
是一个全局变量,等于5
5.
function foo(){}
(function() {
var local = global = 5;
})();
window.foo = 5;
this.x = 5;
with ( window ) { name = 'john'; }
为窗口添加前缀。
是在浏览器上下文中定义全局变量的一种显式方法
6.
function foo(){}
(function() {
var local = global = 5;
})();
window.foo = 5;
this.x = 5;
with ( window ) { name = 'john'; }
默认情况下,在浏览器中,此
指向DOMWindow,除非您使用的方法附加到的对象不是窗口
。这和#5一样。请注意,如果使用XMLHttpRequest之类的方法,则上下文是窗口的上下文
7.
function foo(){}
(function() {
var local = global = 5;
})();
window.foo = 5;
this.x = 5;
with ( window ) { name = 'john'; }
如果使用with
语句,并且未引用已具有属性的对象,则会定义一个全局变量。一般情况下,最好避免将与
关键字一起使用
结论:
就我个人而言,我会将我的代码保存在一个匿名函数作用域中,只在需要时显式地声明globals
(function() {
var governor = 'Schwarzenegger',
state = 'California';
window.president = 'Obama';
})();
在上面,我定义了
调控器
和状态
变量,它们是函数的局部变量。我想将president
明确定义为一个全局变量。这样,我就不会对我定义的哪些变量是全局变量感到困惑,因为我明确地用窗口作为它们的前缀。
您可以将该变量放在页面的开头(如果必须使其在任何地方都可见,则放在全局范围内),但我建议两件事
1) 由于必须打开脚本块,请避免在页面正文中声明它,因为脚本会阻止渲染。所以把它放在
2) 避免创建简单的var,而是使用名称空间,这样可以减少标识符冲突的风险
<script>
var YOUR_APP_NS = {};
YOUR_APP_NS.yourvar = ....
</script>
但是,对于提供的帮助我理解各种情景的有用示例,全球风险值仍然是1。