JavaScript闭包的简单理解
2017-04-24 18:15
225 查看
之前在上web课的时候,听张老师讲JS闭包感觉很简单,就是函数相互嵌套,内部的函数就叫做外部函数的闭包(Closure)。
话说闭包这个词真的挺常出现的,离散里面有它,数据库范式里面也有它。
最近看到一个比较正规的表述:有权访问另一个函数作用域内变量的函数都是闭包。
闭包的作用实际上是增强了函数的封装性,比如你在外部函数定义了一个局部变量,再将它放入一个闭包中,那么除了这个闭包之外,其他所有函数都没有办法访问,这就加强了对这个局部变量的保护。而且闭包会对这个局部变量产生一个引用,这也保证了在触发GC的时候不会将这个局部变量回收(现在还不知道有什么具体用途...大概是用来封装和保护私有变量吧)。
不过滥用闭包会导致产生一大堆没有办法回收的变量,浪费内存,所以使用的时候还是多加小心吧。
想起之前踩过的一个坑:在函数里声明变量的时候漏打了一个var,还放到了闭包里面...
话说闭包这个词真的挺常出现的,离散里面有它,数据库范式里面也有它。
最近看到一个比较正规的表述:有权访问另一个函数作用域内变量的函数都是闭包。
闭包的作用实际上是增强了函数的封装性,比如你在外部函数定义了一个局部变量,再将它放入一个闭包中,那么除了这个闭包之外,其他所有函数都没有办法访问,这就加强了对这个局部变量的保护。而且闭包会对这个局部变量产生一个引用,这也保证了在触发GC的时候不会将这个局部变量回收(现在还不知道有什么具体用途...大概是用来封装和保护私有变量吧)。
不过滥用闭包会导致产生一大堆没有办法回收的变量,浪费内存,所以使用的时候还是多加小心吧。
想起之前踩过的一个坑:在函数里声明变量的时候漏打了一个var,还放到了闭包里面...
相关文章推荐
- Javascript闭包简单理解
- Javascript闭包简单理解
- 简单易懂的JavaScript闭包理解
- 最简单的例子理解Javascript闭包
- Javascript闭包简单理解
- 最简单的例子理解Javascript闭包
- Javascript闭包简单理解
- JavaScript闭包简单理解
- c# interface 的理解(工厂模式)简单实例
- 完成端口的简单理解
- 打破沙锅——AOP简单理解
- 简单理解asp.net 2.0 三层开发
- 对Jena的简单理解和一个例子
- 理解最简单的COM客户
- 最近做毕业设计发现市场上的Delphi书中关于TArrayField的一个错误理解,这里现简单的提一下以后有时间在好好的研究一下
- Computer.硬盘:简单理解磁盘的物理结构
- [JavaScript] 简单理解Ajax异步调用操作
- 工厂方法的简单理解
- JSP-一个理解MVC架构的简单的登陆、注册例子
- Javascript原型的简单理解