javascript闭包入门示例


Posted in Javascript onApril 30, 2014

1.

functionsay667(){
varnum=666;
varsayAlert=function(){alert(num);}
num++;
returnsayAlert;
}
varsayAlert=say667();
sayAlert();

2.

functionsetUpSomeGlobals(){
varnum=666;
gAlertNumber=function(){alert(num);}
gIncreaseNumber=function(){num++;}
gSetNumber=function(x){num=x;}
}
setUpSomeGlobals();//为三个全局变量赋值
gAlertNumber();//666
gIncreaseNumber();
gAlertNumber();//667
gSetNumber(12);
gAlertNumber();//12

3.

functionbuildList(list){
varresult=[];
for(vari=0;i<list.length;i++){
variteml='item'+list[i];
result.push(function(){alert(item+''+list[i]);});
}
returnresult;
}
functiontestList(){
varfnlist=buildList([1,2,3]);
for(varj=0;j<fnlist.length;j++){
fnlist[j]();
}
}

4.

functionsayAlice(){
varsayAlert=function(){alert(alice);}
varalice='HelloAlice';
returnsayAlert;
}
varhelloAlice=sayAlice();
helloAlice();//HelloAlice

5.

functionnewClosure(someNum,someRef){
varnum=someNum;
varanArray=[1,2,3];
varref=someRef;
returnfunction(x){
num+=x;
anArray.push(num);
alert('num:'+num+'\nanArray'+anArray.toString()+'\nref.someVar'+ref.someVar);
}
}
closure1=newClosure(40,{someVar:'closure1'});
closure2=newClosure(1000,{someVar:'closure2'});
closure1(5);
closure2(-10);
Javascript 相关文章推荐
重载toString实现JS HashMap分析
Mar 13 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
Aug 18 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
Dec 12 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
Nov 05 Javascript
利用jQuery实现一个简单的表格上下翻页效果
Mar 14 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
Jun 22 Javascript
vue-cli脚手架-bulid下的配置文件
Mar 27 Javascript
BootStrap模态框闪退问题实例代码详解
Dec 10 Javascript
Vue实现导航栏点击当前标签变色功能
Aug 19 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
Node.js系列之发起get/post请求(2)
Aug 30 Javascript
JavaScript遍历数组的方法代码实例
Jan 14 Javascript
三种动态加载js的jquery实例代码另附去除js方法
Apr 30 #Javascript
js动态控制table的tr、td增加及删除的具体实现
Apr 30 #Javascript
js控制href内容的连接内容的变化示例
Apr 30 #Javascript
js函数定时器实现定时读取系统实时连接数
Apr 30 #Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 #Javascript
jquery实现的网页自动播放声音
Apr 30 #Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 #Javascript
You might like
建立文件交换功能的脚本(一)
2006/10/09 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
Python引用计数操作示例
2018/08/23 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
综合办公室主任职责
2013/12/16 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
交通事故协议书范本
2016/03/19 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python