基于JavaScript 声明全局变量的三种方式详解


Posted in Javascript onMay 07, 2013

JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍。

声明方式一:

使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。该方式即为显式声明详细如下:

<script> 
  var test = 5;//全局变量 
  function a(){ 
    var a = 3;//局部变量 
    alert(a); 
  } 
  function b(){ 
    alert(test); 
  } 
  //a();//调用a方法,那么方法里面的内容才会执行 
  //b();//同上 
</script>

声明方式二:

没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。

<script> 
    test = 5;//全局变量 
    function a(){ 
      aa = 3;//也是全局变量 
      alert(test); 
    } 
    //a();  //输出5 
    //alert(aa);//这里也可以方法a()方法里面的变量,因为aa是全局变量 
  </script>

声明方式三:

使用window全局对象来声明,全局对象的属性对应也是全局变量,详细如下:

<script> 
  window.test = 50; 
  alert(test);//输出50 
</script>

这种方式经常被用到一个匿名函数执行后将一些函数公开到全局。 如JQuery1.5中最末一句
代码如下:

window.jQuery = window.$ = jQuery;

全局变量的优点:

可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。

全局变量的缺点:

(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。

(2)全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进行存取,这种情况破坏了函数的独立性,使函数对全局变量产生依赖。同时,也降低了该函数的可移植性。

(3)全局变量使函数的代码可读性降低。由于多个函数都可能使用全局变量,函数执行时全局变量的值可能随时发生变化,对于程序的查错和调试都非常不利。
因此,如果不是万不得已,最好不要使用全局变量。

Javascript 相关文章推荐
jQuery 前的按键判断代码
Mar 19 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
Aug 13 Javascript
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
Mar 01 Javascript
CSS(js)限制页面显示的文本字符长度
Dec 27 Javascript
Jquery实现显示和隐藏的4种简单方式
Aug 28 Javascript
extJS中常用的4种Ajax异步提交方式
Mar 07 Javascript
浅谈setTimeout 与 setInterval
Jun 23 Javascript
很实用的js选项卡切换效果
Aug 12 Javascript
浅谈js中几种实用的跨域方法原理详解
Dec 02 Javascript
Jquery ajax书写方法代码实例解析
Jun 12 jQuery
前端实现滑动按钮AJAX与后端交互的示例代码
Feb 24 Javascript
你必须知道的JavaScript 变量命名规则详解
May 07 #Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 #Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
May 07 #Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
May 07 #Javascript
JS中的substring和substr函数的区别说明
May 07 #Javascript
js图片自动切换效果处理代码
May 07 #Javascript
JavaScript通过RegExp实现客户端验证处理程序
May 07 #Javascript
You might like
eAccelerator的安装与使用详解
2013/06/13 PHP
smarty简单入门实例
2014/11/28 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
几个有趣的Javascript Hack
2010/07/24 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
代码讲解Python对Windows服务进行监控
2018/02/11 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
Python3获取cookie常用三种方案
2020/10/05 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
成绩单公证书
2014/04/10 职场文书
读书活动总结
2014/04/28 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
Pytorch 如何实现常用正则化
2021/05/27 Python
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android