基于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 相关文章推荐
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
关闭ie窗口清除Session的解决方法
Jan 10 Javascript
IE中的File域无法清空使用jQuery重设File域
Apr 24 Javascript
一个JavaScript操作元素定位元素的实例
Oct 29 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
AngularJS路由切换实现方法分析
Mar 17 Javascript
详解Webpack + ES6 最新环境搭建与配置
Jun 04 Javascript
关于TypeScript模块导入的那些事
Jun 12 Javascript
node版本管理工具n包使用教程详解
Nov 09 Javascript
vue使用pdfjs显示PDF可复制的实现方法
Dec 14 Javascript
详解element-ui中form验证杂记
Mar 04 Javascript
解决layui表格的表头不滚动的问题
Sep 04 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
将PHP作为Shell脚本语言使用
2006/10/09 PHP
利用static实现表格的颜色隔行显示
2006/10/09 PHP
关于php循环跳出的问题
2013/07/01 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
Python3简单实例计算同花的概率代码
2017/12/06 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
2014年教师培训的自我评价
2014/01/03 职场文书
房屋委托书范本
2014/04/04 职场文书
英语求职信范文
2014/05/23 职场文书
教师自我剖析材料
2014/09/29 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
党校培训学习心得体会
2016/01/06 职场文书
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis