一、闭包的产生
当一个嵌套的内部(子)函数,引用了嵌套的外部(父)函数的变量(函数)时,就产生了闭包。
function fn1(){
var a=10;
var b='abc';
fucntion fn2(){
console.log(a);
}
}
二、什么是闭包
理解一:闭包是嵌套的内部函数(绝大部分人)==>fn2
理解二:包含被引用对象(函数)的变量(极少数人)==>a
三、产生闭包的条件
(1)函数嵌套
(2)内部函数引用了外部函数的数据(变量/函数)
(3)执行外部函数
四、常用的闭包
(1)将内部函数作为外部函数的返回值
function f1(){
var a=1;
function f2(){
a++;
console.log(a);
}
return f2;
}
f1();
(2)将函数作为参数传递给另一个函数调用
fucntion f(msg,time){
setTimeOut(function(){
console.log(msg)
},time)
}
f("hello",2000)
五、闭包的作用
(1)使函数内部的变量在函数执行完之后,仍然存活在内存中(延长了局部变量的生命周期)
(2)让函数外部可以操作(读写)到函数内部的数据(变量/函数)