闭包的好处:
希望一个变量长期驻扎在内存当中;
避免全局变量的污染;
私有成员的存在;
举例:
function f1(x){
var a=1;
return function f2(y){
console.log(x+y+(a++));
console.log(a);
}
}
var b=f1(2);//x=2;
b(10);
//相当于b=f2 b()=f2(),故y=10;;
匿名函数:
(function(){});
();
该方法经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数影响全局作用域。也可以减少如闭包这样的对内存的占用,由于匿名函数没有变量指向,执行完毕就可以立即销毁其作用域链。
而js一个最大的好处也是奇特之处之一,就是函数可以直接读取全局变量;
而闭包,简单来说就是能够读取别的函数内部变量的函数,相当于内部函数与外部函数的一座桥梁,同时,子函数的变量会被一层层的向上级寻索,故父函数中所有变量都是子集可以获取到的,反之不成立。