js 闭包的定义以及应用实例
2017-09-26 15:38
691 查看
参考文档 http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
定义:
能够读取其他函数内部定义的变量的函数,
在js 语言中,只有子函数才可以读取函数内部的变量 , 所以闭包就是定义在一个函数内部的函数
备注:
a. 可以用闭包实现private, 某个变量只有内部可以使用但是外部无法访问,(js没有类的概念)
b. 闭包都是延迟执行以及放在内存中的,
eg:
实现封装一个私有变量
不是立即执行的例, 如要c1() c2()的时候才会执行
定义:
能够读取其他函数内部定义的变量的函数,
在js 语言中,只有子函数才可以读取函数内部的变量 , 所以闭包就是定义在一个函数内部的函数
备注:
a. 可以用闭包实现private, 某个变量只有内部可以使用但是外部无法访问,(js没有类的概念)
b. 闭包都是延迟执行以及放在内存中的,
eg:
实现封装一个私有变量
function createCounter(initer) { var count; if (arguments.length === 0) { count = 0; } else { count = initer; } return { inc: function () { count +=1; return count; } }; } var c1 = createCounter(); console.log(c1.inc()); console.log(c1.inc()); console.log(c1.inc()); var c2 = createCounter(10); console.log(c2.inc()); console.log(c2.inc()); console.log(c2.inc());
不是立即执行的例, 如要c1() c2()的时候才会执行
function count() { var arr = []; for(var i=1; i<=3; i++) { arr.push( function () { return i*i; } ); } return arr; } var collection = count(); var c1 = collection[0]; var c2 = collection[1]; var c3 = collection[2]; console.log(c1()); // 16 console.log(c2()); // 16 console.log(c3()); // 16
相关文章推荐
- Node.js---03、node.js 的事件(仅四行关键代码)以及应用实例
- js闭包的定义与应用+获取元素下标的多种方法
- JS中封装解析xml的代码,以及实例应用
- 关于闭包的简单应用实例--getter && setter以及迭代器
- JS中使用闭包来定义常量
- 链式队列定义以及应用
- pig函数以及关键字 的一些实例应用的总结(来自pig笔记)
- Js 对象 实例 以及构造函数的练习
- 前端开发必须知道的JS闭包及应用
- Java_乔晓松_Servlet--ServletContext的总结以及应用实例
- JS中定义类及属性方法应用格式
- 前端开发必须知道的JS(二) 闭包及应用
- javascript之闭包理解以及应用场景
- node.js应用后台守护进程管理器Forever安装和使用实例
- struts1+spring+myeclipse +cxf 开发webservice以及普通java应用调用webservice的实例
- JAVAWEB开发之工作流详解(二)——Activiti核心API的使用(流程定义和流程实例的管理、流程变量、监听器...)以及与Spring的集成
- 学习记录 - Advice定义以及实例
- JS中变量定义、预解释和闭包(一)
- jquery中的each用法以及js中的each方法实现实例