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 面向对象(二)封装代码
May 23 Javascript
深入理解Javascript中的循环优化
Nov 09 Javascript
javascript常用方法汇总
Dec 02 Javascript
使用console进行性能测试
Apr 27 Javascript
jQuery构造函数init参数分析续
May 13 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
Apr 13 Javascript
JS生成不重复的随机数组的简单实例
Jul 10 Javascript
js获取浏览器的各种属性
Apr 27 Javascript
JavaScript面向对象精要(上部)
Sep 12 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
Jan 02 Javascript
关于AOP在JS中的实现与应用详解
May 06 Javascript
js闭包的9个使用场景
Dec 29 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算开始时间到过期时间的相隔的天数
2011/01/12 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
深入分析python 排序
2020/08/24 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
销售人员个人求职信
2013/09/26 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
学习党章思想汇报
2014/01/07 职场文书
乔迁宴答谢词
2014/01/21 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
初中学校对照检查材料
2014/08/19 职场文书
2015年党员承诺书
2015/01/21 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
区域销售大会开幕词
2016/03/04 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS