function f1(){
n = 999;
function f2(){
alert(n);
}
return f2;
}
var result = f1();
result(); // 999
上面代码中的f2函数,就是闭包。
各种专业文献上的“闭包”(closure)定义非常抽象,很难看懂。其实,闭包就是能够读取其他函数内部变量的函数。
由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。
所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
闭包用途:一是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。