定义:闭包就是一个函数
条件:一个函数去嵌套另外一个函数,里边的函数就是闭包
function f1(){
function f2(){
}
}
特点:闭包函数有权访问父级环境的变量信息。
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>14-闭包</title> 6 <script type="text/javascript"> 7 //简单闭包 8 //以下f1函数,只要执行完毕,name和addr变量就被销毁了 9 function f1(){ 10 var name="tom"; 11 var addr="beijing"; 12 function f2(){ 13 console.log(AO.name+"--"+AO.addr); 14 } 15 return f2; 16 } 17 18 //ff是f2函数的引用,因此调用ff函数的效果与调用f2函数效果一致 19 var ff = f1(); 20 21 //name和addr由于f1函数执行完毕,会被销毁 22 //ff()函数执行后也可以访问到name和addr的信息 23 //原因:name和addr在 24 25 //name和addr由于f1函数声明好之后,已经“固定”为f2执行环境内部AO的属性了 26 //和外部环境的变量没有直接交互关系。 27 28 //name和addr由于f1函数执行完毕,本身的作用域链被销毁 29 //但是f2函数内部的AO并没有被销毁,还有ff来指引它 30 31 ff(); //tom--beijing 32 </script> 33 </head> 34 <body> 35 36 </body> 37 </html>