如何在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

上一篇: How to declare a global variable in JavaScript?

下一篇: node.js global variables?