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 相关文章推荐
解决Jquery load()加载GB2312页面时出现乱码的两种方案
Sep 10 Javascript
React.js入门学习第一篇
Mar 30 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
Dec 07 Javascript
angular4模块中给标签添加背景图的实现方法
Sep 15 Javascript
vue的toast弹窗组件实例详解
May 14 Javascript
解决Angular2 router.navigate刷新页面的问题
Aug 31 Javascript
koa socket即时通讯的示例代码
Sep 07 Javascript
angular4笔记系列之内置指令小结
Nov 09 Javascript
javascript自定义日期比较函数用法示例
Jul 22 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 Javascript
JavaScript数组去重实现方法小结
Jan 17 Javascript
原生js生成图片验证码
Oct 11 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字符串的编码问题的详细介绍
2013/04/27 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
Javascript 布尔型分析
2008/12/22 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
python实现定时发送qq消息
2019/01/18 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
Pycharm 跳转回之前所在页面的操作
2021/02/05 Python
自荐信格式
2013/12/01 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
社区义诊通知
2015/04/24 职场文书
css3 文字断裂效果
2022/04/22 HTML / CSS
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers