为什么要有闭包?
使用闭包主要是为了设计私有的方法和变量。
- 闭包的优点是可以避免全局变量的污染。
- 缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成
内存泄露。
为什么我会把内存泄漏加删除线呢???
闭包会造成内存泄露?
对,但也不完全对。
内存泄露是指你用不到(访问不到)的变量,依然占居着内存空间,不能被再次利用起来。
闭包里面的变量明明就是我们需要的变量(lives),凭什么说是内存泄露?
这个谣言是如何来的?
因为 IE。IE 有 bug,IE 在我们使用完闭包之后,依然回收不了闭包里面引用的变量。
这是 IE 的问题,不是闭包的问题。
感谢饥人谷的知乎问答
闭包有三个特性:
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收
比如:local 变量和 bar 函数就组成了一个闭包(Closure)
function foo(){
var local = 1
function bar(){
local++
return local
}
return bar
}
var func = foo()
func()