这几天学习了一下js中的闭包,给大家分享一下,如果有说的不对的,请及时和我说。
闭包的概念
闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“
例如:
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
以上案例中f2函数就是闭包。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。
js闭包的特性
a:闭包的外层是个函数,闭包内部有函数。
b:闭包会return内部函数,闭包返回的函数内部不能有return。(如果有会结束闭包)
c:执行闭包后,闭包的内部变量会存在,闭包内部函数的内部变量会回收。
function f1(){
var n=0;
function f2(){
alert(++n);
}
return f2;
}
var fun= f1();
fun(); //1
fun(); //2
此js代码在执行的过程中分别alert出1,2。由此可知执行闭包后,闭包的内部变量会存在,闭包内部函数的内部变量会回收。