闭包的问题
来源:2-2 新的声明方式let(下)
Bruce_Ly
2020-11-22
for(var i =0;i<3;i++){
(function(j){
setTimeout(function(){
console.log(j)
},1000)
})(i)
}
对于这个闭包的例子,我没有明白闭包的含义,我是否可以这样理解:
var i=0时,由于出现了一个闭包,i这个变量开辟的内存,没有被释放掉,
所以,当i =1时,运行环境又重新为i 开辟了另外1块内存i=1 .
当i =2时,运行环境又重新为i 开辟了另外2块内存i=2
所以运行环境总共给i 开辟了3块内存,当console.log(2)执行完后,这3块内存才被释放掉。
经常听说闭包容易出现内存没被释放掉的信息,这个例子中不存在吧?
写回答
1回答
-
谢成
2020-11-22
当内部函数在定义它的作用域的外部被引用时,就创建了该内部函数的闭包,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被释放,因为闭包需要它们.
022020-11-24
相似问题