最近有读到关于垃圾回收机制和闭包的文章,但是对于他们的理解还是不深刻,存在一些疑惑,希望有大佬可以给予解答
我的理解是局部变量在函数执行完成之后就被回收,而全局变量不会被回收直到窗口关闭(是因为全局变量的生命周期?)
那么函数声明会被回收吗?回收只回收变量?下面的例子:
function a(){
var i = 1;
function b(){
return i
}
return b
}
var x = a();
x()
在执行x()后,函数a以及内部的变量i和函数b会被回收?
闭包的另一个作用是常驻内存,例:
for(var i = 0; i< 9; i++){
(function(i){
setTimeout(function(){
console.log(i)
},1000)
})(i)
}
这个例子是将变量i保存在匿名函数中,那么函数执行完之后i会被回收吗?
米琪卡哇伊
相关分类