1 function f1(){ 2 var a = 1; 3 var b =2; 4 5 return function f2(){alert(a);} 6 } 7 8 var result = f1(); 9 result(); // 1
1、函数不返回时已经产生闭包。
2、初始化 lexcialEnov的时候,已经产生闭包。 // 静态作用域建立时候,已经初始化了。
3、闭包的本质就是作用域链。sub{[scope]} -> main {[scope]}
/// instance: 闭包的应用。
(function(){ var m = 0; function getM(){ return m; } function setM(val){ m = val; } window.gM = getM; window.sM = setM; })() sM(10); alert(gM());