为了账号安全,请及时绑定邮箱和手机立即绑定

如何在JavaScript中声明全局变量?

如何在JavaScript中声明全局变量?

喵喔喔 2019-10-26 12:44:54
如何在JavaScript中声明全局变量?
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

如果必须在生产代码中生成全局变量(应避免使用),请务必显式声明它们:


window.globalVar = "This is global!";

虽然可以通过省略来定义全局变量var(假设没有同名的局部变量),但是这样做会生成隐式全局,这是一件不好的事,并且在严格模式下会产生错误。


查看完整回答
反对 回复 2019-10-26
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

如果这是您唯一要使用此变量的应用程序,则Felix的方法很好。但是,如果要编写jQuery插件,请考虑jQuery对象下所需的“ namespacing”(稍后在引号上进行详细说明...)变量和函数。例如,我目前正在使用一个名为miniMenu的jQuery弹出菜单。因此,我miniMenu在jQuery下定义了一个“命名空间” ,并将所有内容放置在其中。


我在谈论javascript名称空间时使用引号的原因是,从通常意义上说,它们并不是真正的名称空间。相反,我只使用一个javascript对象并将所有函数和变量作为该对象的属性。


另外,为方便起见,我通常将插件名称空间与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(...) {...}每当我需要在全球范围内保存的东西,我仍然保持它的全局命名空间。


查看完整回答
反对 回复 2019-10-26
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

相反,我建议您了解JavaScript中的作用域和闭包


旧的错误答案: 使用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();

});

提示:在此页面的控制台中运行整个代码;-)


查看完整回答
反对 回复 2019-10-26
  • 3 回答
  • 0 关注
  • 626 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号