标签:
闭包就是能够读取其他函数内部局部变量的函数。闭包就是将函数内部和函数外部连接起来的一座桥梁。
1.概念:允许使用内部函数,并且这些内部函数设置去访问它们所在的外部函数中声明的所有局部变量、其他内部函数。
这样当一个此内部函数被调用的时候,就会形成闭包! 即,内部函数会在外部函数返回后被执行。
2.变量的作用域和生命周期! 生命周期决定作用域! 全局,从头活到底!直到页面关闭!
3.要封装私有变量! 但又想从外部访问私有变量! 那么,为什么要封装私有变量呢? 为了保证变量不被污染! 闭包就是干这事的,两全齐美!
你封装了,然后提供一个内部函数来操作外层函数的局部变量。 封装私有的目的达到了,从外部访问的目的达到了! OK,下班!
调用外部函数,然后将内部函数作为返回值再调用,实现在函数外部读取函数内的变量。 类比java对象的get、set方法!
4.javascript中,所有函数都能访问全局变量!
5.计数器困境: 实现变量私有,就必须将变量放到函数中去,保存变量值的修改(事务状态), 那就必须使用内嵌函数!
通过调用外部函数来调用内部函数!
!. 闭包的思考
1. 在函数外部想访问函数内部的局部变量,可以使用闭包来实现!
2. 闭包、函数自调用!
3. javascript中函数不是一个对象吗? 内部函数不是相当于外部函数的一个属性吗? 为什么不能按照对象.属性
来访问函数的内部属性呢?
4. 把javascript中的函数理解为一对象, 与java对象类比! 一个对象本身都会向外公开访问自己内部局部属性的方法。
5. 闭包会造成变量在内存中持久占用。
闭包参考资料:
1. http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
2. 浏览器收藏夹
标签:
原文地址:http://www.cnblogs.com/njqa/p/5642368.html