基于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 相关文章推荐
用ASP将SQL搜索出来的内容导出为TXT的代码
Jul 27 Javascript
JQuery 国际象棋棋盘 实现代码
Jun 26 Javascript
Extjs学习笔记之九 数据模型(上)
Jan 11 Javascript
基于jquery的超简单上下翻
Apr 20 Javascript
js前台判断开始时间是否小于结束时间
Feb 23 Javascript
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
AngularJS之依赖注入模拟实现
Aug 19 Javascript
Ajax与服务器(JSON)通信实例代码
Nov 05 Javascript
AngularJS实现网站换肤实例
Feb 19 Javascript
js用正则表达式筛选年月日的实例方法
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基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
Python实现获取某天是某个月中的第几周
2015/02/11 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
全球性的女装店:storets
2019/06/12 全球购物
电气自动化自荐信
2013/10/10 职场文书
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
九年级英语教学反思
2014/01/31 职场文书
学校招生宣传广告词
2014/03/19 职场文书
员工团队活动方案
2014/08/28 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技