之前一直不了解什么是js中的闭包,现在趁着有时间多积累一下基础知识。我对闭包的理解就类似与java中私有变量的概念,而闭包就类似于getter和setter方法。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
因为闭包可能导致关联的环境中的变量不释放,所以容易引起内存泄漏,在使用js闭包时不可滥用。