基于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 相关文章推荐
javascript 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
ASP SQL防注入的方法
Dec 25 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
Mar 21 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
Oct 24 Javascript
js获取下拉列表框中的value和text的值示例代码
Jan 11 Javascript
Jquery倒计时源码分享
May 16 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
Jun 24 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
Apr 01 Javascript
详解创建自定义的Angular Schematics
Jun 06 Javascript
three.js显示中文字体与tween应用详析
Jan 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伪静态的实现详细介绍
2013/04/28 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
vue单页缓存方案分析及实现
2018/09/25 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
vue实现文字加密功能
2019/09/27 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
python em算法的实现
2020/10/03 Python
python中添加模块导入路径的方法
2021/02/03 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
音乐表演专业毕业生求职信
2013/10/14 职场文书
法学专业自我鉴定
2014/02/05 职场文书
年终总结会议主持词
2014/03/17 职场文书
员工试用期自我评价
2014/09/18 职场文书
工作简历自我评价
2015/03/11 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏