基于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非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
图解JavaScript中的this关键字
May 28 Javascript
AngularJS中的包含详细介绍及实现示例
Jul 28 Javascript
jQuery Collapse1.1.0折叠插件简单使用
Aug 28 jQuery
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 Javascript
iview实现select tree树形下拉框的示例代码
Dec 21 Javascript
JavaScript 性能提升之路(推荐)
Apr 10 Javascript
JavaScript实现抖音罗盘时钟
Oct 11 Javascript
ES2020 新特性(种草)
Jan 12 Javascript
js实现缓动动画
Nov 25 Javascript
微信小程序实现聊天室功能
Jun 14 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 版本]
2007/03/20 PHP
php学习 字符串课件
2008/06/15 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
详解Python 最短匹配模式
2020/07/29 Python
python实现人工蜂群算法
2020/09/18 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
python实现简单的学生管理系统
2021/02/22 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
幼儿园老师辞职信
2014/01/20 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
珠宝店促销方案
2014/03/21 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
2014年计生工作总结
2014/11/21 职场文书
2014年法务工作总结
2014/12/11 职场文书
工作自我推荐信范文
2015/03/25 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript