给笨蛋鱼自我理解一下 就是 一个函数里写了另一个函数,另一个函数 就是闭包
function foo(){
var a = 5;
console.log("foo a:",a);
function closure(){
return a;
}
return closure;
// return function(){return a;};
}
var foo_bar = foo(); // foo a: 5
function bar(){
var a = foo_bar();
var b = a+5;
console.log("bar b",b);
}
bar(); // bar b 10
👆 closure就是闭包
如果要用到foo()函数里定义的局部变量a,但是又不能将局部定义成全局(都是全局变量太乱了),这个时候使用闭包
如上例,foo()函数返回值是一个函数,ps:函数名可以作为一个变量直接返回
赋值给foo_bar,此时,foo_bar实际上是就是一个函数 得到了foo()函数里的局部变量a的值,至于这个存储机制,还没学好...
所以此时 在bar()里拿到了a的值,做了运算 正确输出