概括:闭包就是一个函数,捕获作用域内的外部绑定.
官方定义:一个拥有许多变量和绑定了这些变量环境的表达式(通常是一个函数),因为这些变量也称为了这表达式的一部分(闭包实现了全局变量的累加 模块化的代码 减少了全局变量的污染)。
自由变量和闭包的关系:自由变量闭合于闭包的创建。
自由变量:如果一个函数内部有其他函数,那么这些内部函数就可以访问外部函数中声明的变量(这些变量就称之为自由变量).
高阶函数:返回另一个函数的函数成为高阶函数。
闭包的优点: 1.希望一个变量可以长期驻扎在内存中
2.避免全局变量的污染
3.私有成员的存在
3.私有成员的存在
闭包的缺点 :1.是常驻内存
2.会增大内存的使用量,使用不当很容易造成内容泄露
例: function fn(){
var a=10;
function f1(){
a++;
console.log(a);
}
return f1;
}
var f=fn();
f();
f();
f();
闭包的特性: 1.函数嵌套函数
2.函数内部可以引入外部的参数和变量
3.参数和变量不会被垃圾机制回收