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 ui1.7 dialog只能弹出一次问题
Aug 27 Javascript
JQuery对checkbox操作 (循环获取)
May 20 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 Javascript
图解js图片轮播效果
Dec 20 Javascript
JavaScript中判断数据类型的方法总结
May 24 Javascript
jquery获取form表单input元素值的简单实例
May 30 Javascript
AngularJS 避繁就简的路由
Jul 01 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 Javascript
JS组件系列之JS组件封装过程详解
Apr 28 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
为什么推荐使用JSX开发Vue3
Dec 28 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
博士208HAF收音机实习报告
2021/03/02 无线电
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
js 操作符实例代码
2009/10/24 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
angular学习之动态创建表单的方法
2018/12/07 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
Python3.2中Print函数用法实例详解
2015/05/19 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
pytorch实现查看当前学习率
2020/06/24 Python
python获取整个网页源码的方法
2020/08/03 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
人力资源专员自我评价怎么写
2013/09/19 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
企业元宵节主持词
2014/03/25 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
岳麓书院导游词
2015/02/03 职场文书
安装工程师岗位职责
2015/02/13 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
Python编写nmap扫描工具
2021/07/21 Python
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL