我需要在哪里放置一段JavaScript代码,用于初始化一个变量,该变量必须对使用该页面执行的所有代码都可见? (例如,元素上的事件处理程序需要访问这个变量)。我在哪里可以在网页中声明全局JavaScript变量?
回答
您可以不使用任何函数,也可以在不使用'var'关键字的情况下执行函数。在任何其他脚本(可能位于页面的顶部)之前分配它,以便脚本可以读取该值。
您也可以将它放在一个包含的JS文件中,但将它放在页面上通常更具有可用性,因为您可以轻松地看到全局值,并且可以通过服务器端代码修改每个页面的值。同时尽量避免在正文中分配全局变量,它可能会让人产生困惑,并且很难阅读。
<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>
在函数中定义一个全局(隐含全局)不是一个好主意,因为它会引起很多争议。
<head>
<script>
var b = 0;
</script>
<script src="...">
</head>
<body>
...
</body>
声明变量与任何你的函数,这样它就成为一个全局变量。
下面是一个全局变量的例子。第一个函数使用全局函数,但第二个函数使用同名的局部变量来掩盖全局。
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>
另一种方法是在初始脚本加载后动态添加从属脚本。可以按如下方式做到这一点使用一些像jQuery:
$(window).load(function() {
$.getScript('dependant.js');
});
的只办法没有一个全局变量是使用关键字var
的功能范围。其他任何东西都是全局变量。
(function() {
var local = 5;
})();
如果函数是文字或函数定义不要紧,它有是某种类型的函数。
全局变量的例子:
:
var global = 5;
以上是不在函数范围,因而即使使用var
全球。
2。
(function() {
global = 5;
})();
在上述中,没有var
被使用,所以它成为一个隐含的全球性的。
3.
function foo(){}
foo
没有另一个函数的内部定义或分配到一个对象键,以便它的全球可访问的。
4.
(function() {
var local = global = 5;
})();
当var
做多的任务,只有第一个变量变成本地...所以global
是一个全局变量,相当于5
5.
window.foo = 5;
前缀window.
是在浏览器上下文中定义全局变量的显式方式。
6.
this.x = 5;
默认情况下在浏览器中,this
点存在domWindow,除非你是在附加到一个对象,它是不是window
的方法。这与#5是一样的。请注意,如果您使用XMLHttpRequest之类的方法,则上下文就是窗口。
7.
with (window) { name = 'john'; }
如果使用with
声明,你不引用已具有属性的对象,有一个全局变量定义。一般来说,最好避免使用with
关键字。
结论:
就个人而言,我会保持我的代码在匿名函数的范围,并且只当我需要显式声明的全局变量。
(function() {
var governor = 'Schwarzenegger',
state = 'California';
window.president = 'Obama';
})();
在上面的,我定义governor
和state
变量,他们是当地到我的功能。我想明确定义president
作为全局变量。这样,我不会对我定义为全局变量的变量感到困惑,因为我明确地以window.
为前缀。
你可以变量放置在页面的开始(在全球范围内,如果你要让它随处可见),但我建议两件事
1),因为你要打开一个脚本块,避免因为脚本阻止了渲染,所以在页面内部声明它。所以就把它只是</head>
2)避免之前创建一个简单的变种,但使用一个命名空间代替你减少标识符碰撞
<script>
var YOUR_APP_NS = {};
YOUR_APP_NS.yourvar = ....
</script>
这是一个很好的做法,以风险为不污染全局范围。如果你需要一些公共变种通过这种方式,你可以只写
YOUR_APP_NS.yourvar1 = ....
YOUR_APP_NS.yourvar2 = ....
YOUR_APP_NS.yourvarN = ....
但全局变量仍然是1
- 1. 我必须在哪里声明我的全局变量?
- 2. 在Code Igniter中,我应该在哪里声明我的全局变量?
- 3. 在哪里声明全局变量?在.h or.m?
- 4. 我们可以在QML文件中声明全局变量吗?
- 5. JavaScript;我如何声明变量全局?
- 6. 全局常量是否可以在JavaScript中声明?
- 7. 在ActionScript中声明全局变量?
- 8. 在yacc中声明全局变量
- 9. 在coffescript中声明全局变量
- 10. 在全局变量中声明查询
- 11. 在Java中声明全局变量
- 12. 在Swift中声明全局变量
- 13. 全局变量在android中的声明
- 14. 在vb中声明全局变量
- 15. 哪一个更好,在类中声明全局变量或在Java类中声明局部变量?
- 16. 我在哪里可以合法地在C99中声明一个变量?
- 17. 声明的全局变量在功能里面没有改变
- 18. 全局变量声明
- 19. drupal -----这些变量在哪里声明?
- 20. 在哪里声明对象变量
- 21. 在哪里可以定义ASP.NET项目中的JavaScript全局变量
- 22. 我可以在for循环中声明局部变量吗?
- 23. 我可以在C#中声明一个全局推断变量吗?
- 24. 在全局头文件中声明一个全局变量?
- 25. 如何在Javascript中使用jquery声明全局变量
- 26. Javascript在AJAX响应中声明全局变量
- 27. 如何在ASP.NET MVC中声明一个全局变量页面
- 28. 在JavaScript中创建循环时,我必须在哪里声明变量?
- 29. iphone,我在哪里可以声明一个全局的方法,可以在所有的类名为
- 30. jquery widget factory - 我可以在_create或widget外部声明全局变量吗?