函数在调用的时候,会形成一个私有作用域,内部的变量不会被外面访问,这种保护机制叫闭包。这2就是意味着函数调用完毕,这个函数形成的栈内存会被销毁。
function fn(){
var a = 12;
a++;
console.log(a)
}
fn()
fn()
fn()
但有时候外面不希望他被销毁
函数归属谁跟它在哪调用没有关系,跟在哪定义有关
fu()调用完毕后得到的是一个匿名函数,但是这个函数在fn这个作用域下定义,所以这个匿名函数内部的变量在fn作用域下查找,这种写法可以使函数内部的变量不被销毁。