闭包小问题
作者:互联网
问题:闭包简单来说就是在外部用了内部的数据(变量/函数) 那么当内部执行完后,函数内部的声明的局部变量还存在吗?
不存在
function fn1(){
var a=2
function fn2(){
a++
console.log(a)
}
function fn3(){
a--
console.log(a)
}
return fn3
}
var f=fn1()
f() //1
f() //0
例如上述就产生一个闭包,内部嵌套的函数使用了外部函数的变量a形成闭包,并且在全局下使用了fn1()返回fn3
当执行完var f=fn1()之后,函数内部的局部变量fn2 fn2会被销毁,fn2对象没有被使用当成垃圾对象被回收
而fn3变量其实会销毁,保留的是fn3所指向的堆内存中的对象,只不过 f 指向他了,所以这个对象的空间没有被释放,里面的a也一直被保留下来可以使用
标签:闭包,function,fn3,fn2,fn1,问题,var 来源: https://blog.csdn.net/jw_code/article/details/116562980