如何在JavaScript中声明一个全局变量?
我怎样才能在JavaScript中声明一个全局变量?
如果您必须在生产代码中生成全局变量(应该避免),请务必 明确声明它们:
window.globalVar = "This is global!";
虽然可以通过仅省略var
(假设没有同名的局部变量)来定义全局变量,但这样做会生成隐式全局变量,这是一件坏事,并且会在严格模式下产生错误。
如果这是您要使用此变量的唯一应用程序,则Felix的方法非常出色。 然而,如果你正在编写一个jQuery插件,请考虑jquery对象下需要的“namespacing”(稍后引用的细节...)变量和函数。 例如,我目前正在研究一个叫做miniMenu的jQuery弹出菜单。 因此,我已经在jQuery下定义了一个“命名空间” miniMenu
,并且我将所有内容放在那里。
当我谈到JavaScript命名空间时,我使用引号的原因是它们并不是真正意义上的名称空间。 相反,我只是使用JavaScript对象,并将所有我的函数和变量作为此对象的属性。
另外,为了方便起见,我通常将plugin命名空间与i
命名空间进行子空间分隔,以便只能在插件内部使用,以便将其从插件用户中隐藏起来。
这是如何工作的:
// 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();
现在我只需要$.miniMenu.i.globalVar = 3
或$.miniMenu.i.parseSomeStuff = function(...) {...}
无论何时我需要全局保存某些内容,并且仍然保持它不在全局命名空间。
使用jQuery你可以做到这一点,不管声明在哪里:
$my_global_var = 'my value';
并将随处可用。 我使用它来制作快速图像画廊,当图像传播到不同的地方时,像这样:
$gallery = $('img');
$current = 0;
$gallery.each(function(i,v){
// preload images
(new Image()).src = v;
});
$('div').eq(0).append('<a style="display:inline-block" class="prev">prev</a> <div id="gallery"></div> <a style="display:inline-block" class="next">next</a>');
$('.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://www.djcxy.com/p/95025.html