How to declare a global variable in JavaScript?
如何在javascript中声明全局变量?
如果必须在生产代码中生成全局变量(应避免这种情况),请始终明确声明它们:
1 | window.globalVar ="This is global!"; |
虽然可以通过省略
如果这是您将要使用这个变量的唯一应用程序,那么Felix的方法非常好。但是,如果您正在编写jquery插件,请考虑jquery对象下所需的变量和函数的"namespacing"(稍后将详细介绍引号…)。例如,我目前正在开发一个jquery弹出菜单,我称之为minimenu。因此,我在jquery下定义了一个"名称空间"
我在谈论JavaScript名称空间时使用引号的原因是,它们在正常意义上并不是真正的名称空间。相反,我只是使用一个javascript对象,并将我的所有函数和变量作为这个对象的属性。
此外,为了方便起见,我通常使用
这就是它的工作原理:
1 2 3 4 | // An object to define utility functions and global variables on: $.miniMenu = new Object(); // An object to define internal stuff for the plugin: $.miniMenu.i = new Object(); |
现在,只要我需要在全局保存某个东西,我就可以执行
使用jquery,无论声明在哪里,都可以这样做:
1 | $my_global_var = 'my value'; |
在任何地方都可以使用。我用它来制作快速的图像库,当图像在不同的地方传播时,就像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $gallery = $('img'); $current = 0; $gallery.each(function(i,v){ // preload images (new Image()).src = v; }); $('div').eq(0).append('prev next'); $('.next').click(function(){ $current = ( $current == $gallery.length - 1 ) ? 0 : $current + 1; $('#gallery').hide().html($gallery[$current]).fadeIn(); }); $('.prev').click(function(){ $current = ( $current == 0 ) ? $gallery.length - 1 : $current - 1; $('#gallery').hide().html($gallery[$current]).fadeIn(); }); |
提示:在本页的控制台中运行整个代码;-)
下面是一个全局变量的基本示例,其余函数可以访问该变量。下面是一个实例:http://jsfiddle.net/fxce9/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var myVariable = 'Hello'; alert('value: ' + myVariable); myFunction1(); alert('value: ' + myVariable); myFunction2(); alert('value: ' + myVariable); function myFunction1() { myVariable = 'Hello 1'; } function myFunction2() { myVariable = 'Hello 2'; } |
如果在jquery ready()函数中执行此操作,请确保变量与其他函数一起位于ready()函数中。
在函数之外声明变量
1 2 3 4 5 6 7 8 | function dosomething(){ var i = 0; // can only be used inside function } var i = ''; function dosomething(){ i = 0; // can be used inside and outside the function } |
最好的方法是使用
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!DOCTYPE html> <html> <head> <script type="text/javascript" src="init.js"> <script type="text/javascript"> MYLIBRARY.init(["firstValue", 2,"thirdValue"]); <script src="script.js"> </head> <body> Hello ! </body> </html> |
init.js(基于此答案)
1 2 3 4 5 6 7 8 9 10 11 12 13 | var MYLIBRARY = MYLIBRARY || (function(){ var _args = {}; // private return { init : function(Args) { _args = Args; // some other initialising }, helloWorld : function(i) { return _args[i]; } }; }()); |
JScript
1 2 3 4 | // Here you can use the values defined in the html as if it were a global variable var a ="Hello World" + MYLIBRARY.helloWorld(2); alert(a); |
这是PLNKR。希望有帮助!