javascript中运用闭包和自执行函数解决大量的全局变量问题


Posted in Javascript onDecember 30, 2010

但是从全局看来,这样会导致出现一些让我们难以掌控的情况的出现:变量同名、多个函数共用一个全局变量后的值的变换……等等。所以,有时候,对于一些简单的全局变量,我们可以通过另一种方式来处理——用自执行函数+闭包的方法来解:

比如:我们要在网页加载时给出一个提示,在网页关闭时给出另一个提示
下面的代码,实现了以上功能

var msg1 = "欢迎光临!"; // 定义一个全局变量 
var msg2 = "再见!" //定了另一个全局变量 
window.onload = function() { 
alert(msg1); 
} 
window.onunload = function() { 

alert(msg2); 
}

这段代码中已经用到了两个全局变量。而只是为了实现一个简小的功能。
而且,全局变量太多,我们必须记住:msg1是欢迎时的变量,msg2是关闭时变量……如果变量更多,我们还能记得住吗?

下面是同样的功能,不过运用了自执行函数+闭包方法:

(function() { 
var msg = "Hello, world!"; 

window.onload = function() { 


alert(msg); 

} 
})(); 
(function() { 

var msg = "Hello, world!"; 

window.onunload = function() { 


alert(msg); 

} 
})();

后者做法,虽然代码增长了,但是:
1)msg变量只在各自的自执行函数内有效。不会和其它全局变量之间产生混淆。
2)代码的结构变得更加的清晰。
3)解决了大量使用全局变量的情况。

以上只是本人的一点认识,希望真正的高手给出点评!

Javascript 相关文章推荐
javascript奇异的arguments分析
Oct 20 Javascript
jquery图片上下tab切换效果
Mar 18 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
Dec 24 Javascript
javascript计算星座属相(十二生肖属相)示例代码
Jan 09 Javascript
学习javascript面向对象 掌握创建对象的9种方式
Jan 04 Javascript
老生常谈JavaScript 函数表达式
Sep 01 Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 Javascript
详解JavaScript中数组的reduce方法
Dec 02 Javascript
jQuery Chosen通用初始化
Mar 07 Javascript
jQuery选择器特殊字符与属性空格问题
Aug 14 jQuery
JS错误处理与调试操作实例分析
Apr 13 Javascript
vue下载二进制流图片操作
Oct 26 Javascript
javascript中创建对象的三种常用方法
Dec 30 #Javascript
javascript 闭包疑问
Dec 30 #Javascript
javascript数字数组去重复项的实现代码
Dec 30 #Javascript
ExtJs的Date格式字符代码
Dec 30 #Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
Dec 30 #Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
Dec 30 #Javascript
在VS2008中使用jQuery智能感应的方法
Dec 30 #Javascript
You might like
分享一下贝贝成长进度的php代码
2012/09/14 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
详解python中字典的循环遍历的两种方式
2017/02/07 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Django通过json格式收集主机信息
2020/05/29 Python
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
优秀毕业生推荐信范文
2014/03/07 职场文书
行政内勤岗位职责
2014/04/07 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js