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 相关文章推荐
ASP小贴士/ASP Tips javascript tips可以当桌面
Dec 10 Javascript
Javascript load Page,load css,load js实现代码
Mar 31 Javascript
关于跨站脚本攻击问题
Dec 22 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
Apr 06 Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 Javascript
使用jquery.qrcode.js生成二维码插件
Oct 17 Javascript
Javascript实现图片懒加载插件的方法
Oct 20 Javascript
Express使用html模板的详细代码
Sep 18 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 Javascript
js Array.slice的8种不同用法示例
Jul 10 Javascript
微信小程序 wx:for遍历循环使用实例解析
Sep 09 Javascript
Vue组件间的通信pubsub-js实现步骤解析
Mar 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经典的给图片加水印程序
2006/12/06 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
Python正则表达式教程之二:捕获篇
2017/03/02 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
五一口号
2014/06/19 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
病假证明模板
2015/06/19 职场文书
农村婚庆主持词
2015/06/29 职场文书
领导干部学习心得体会
2016/01/23 职场文书
JavaScript原型链详解
2021/11/07 Javascript