JS闭包(closure)一个应用示例
来源:互联网 发布:苹果电脑装机软件 编辑:程序博客网 时间:2024/05/17 08:24
在自己用js闭包前其实也没有太懂为啥要用闭包。前几天碰到了一个问题,用闭包解决了。背景是我不停地要向不同的ip发两条命令,两条命令之间相隔100ms发送。
最早的程序大概类似这样:
var ip = 1;var port = 2;function aaa(ip, port){ console.log(ip); console.log(port);}aaa(ip, port)setTimeout(function(){aaa(ip, port)}, 100)//第二条命令还发出去,目标ip和port已经变了ip = 4;port = 6;
开始我以为运行结果会是1,2,1,2,因为我觉得在设定timeout的时候ip和port是1,2,在执行时也应该是1,2。其实发现是1,2,4,6。
后来把程序改成了这样:
var ip = 1;var port = 2;function bbb(ip, port){ aaa(ip, port) setTimeout(function(){aaa(ip, port)}, 100) function aaa(ip, port){ console.log(ip); console.log(port); }}bbb(ip, port)ip = 4;port = 6;
搞定了。返回头看,这就是闭包。w3c对闭包的解释:A closure is a function having access to the parent scope, even after the parent function has closed.在timeout执行aaa时,bbb已经结束了,但是其参数依然有效。
阅读全文
0 0
- JS闭包(closure)一个应用示例
- js closure js 闭包的应用
- JS 闭包(Closure)
- js闭包(closure)
- closure (闭包 -- 匿名函数) 示例
- Lua闭包(closure)示例
- JS中的闭包(Closure)
- js-----闭包浅谈(Closure)
- JS的闭包(closure)
- JS中的闭包(closure)
- JS的闭包Closure
- 闭包(closure)
- 闭包(Closure)
- 闭包(closure)
- 闭包(closure)
- 闭包(closure)
- 个人对JS闭包(Closure)的理解
- (function (){})(); JS 闭包 (Closure) 范式
- Android studio 自学笔记-----avd打不开模拟器,进度条无反应
- 2017-07-01:集训从此开始
- Win8.1系统提示0xc000000f错误的一种解决方法
- Tomcat启动慢的测试与解决
- SharedPerferences 工具类
- JS闭包(closure)一个应用示例
- sqlite3 数据去重与通配符
- 三,我的大学生活(2)--新的开始
- textCNN在tensorflow上的故事——记一个tf入门者的学习之路
- 通向架构师的道路(第一天)之Apache整合Tomcat
- 'org.springframework.beans.MutablePropertyValues.get(Ljava/lang/ String;)Ljava/lang/Object;'. See E
- Eclipse中导入外部项目时提示HttpServletRequest 不能引用的问题
- [8] Shell 基础知识
- 基于HTML5 画布功能canvas的绘画板:画线、画圆、画矩形、橡皮、改变线条