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系列(37):设计模式之享元模式详解
Mar 04 Javascript
JS创建事件的三种方法(实例代码)
May 12 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 Javascript
jquery实现弹窗功能(窗口居中显示)
Feb 27 Javascript
详解AngularJS controller调用factory
May 19 Javascript
微信小程序版翻牌小游戏
Jan 26 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
Node.js中的child_process模块详解
Jun 08 Javascript
JS实现的贪吃蛇游戏案例详解
May 01 Javascript
vue配置多代理服务接口地址操作
Sep 08 Javascript
vue-cli3配置favicon.ico和title的流程
Oct 27 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
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
长波知识介绍
2021/03/01 无线电
php 函数使用方法与函数定义方法
2010/05/09 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
php导入模块文件分享
2015/03/17 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
机器学习python实战之决策树
2017/11/01 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
车间统计员岗位职责
2014/01/05 职场文书
中国央视网签名寄语
2014/01/18 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
安全负责人任命书
2014/06/06 职场文书
作风年建设汇报材料
2014/08/14 职场文书
党员演讲稿
2014/09/04 职场文书
获奖感言怎么写
2015/07/31 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android