什么是闭包?
闭包是一个函数加上到创建函数的作用域链接 (两个函数的作用域【scope】链接上),闭包‘关闭’了函数的自由变量(变量暂时不会被销毁)
例如:
<script>
function fm(x){
return function(y){
return x+y
}
}
var add1=fm(3);
console.log(add1(2));//5
//关闭了x的自由变量(变量暂时不会销毁)
console.log(add1(3));//6
console.log(add1(4));//7
console.log(add1(5));//8
</script>
闭包的特性
1,函数嵌套函数。
2,函数内部可以引用外部的参数和变量。
3,参数和变量不会被垃圾回收机制回收。
闭包的缺点
1,常驻内存,增加内存使用量。
2,使用不当很容易造成内存泄漏。